Как утверждать типы с помощью библиотечной типизации?

Есть ли способ утверждать описания типов во время выполнения?

принятие желаемого за действительное:

import typing

def work(hours: int, place: str, fruit: List[str]):
    typing.assert(hours, int)
    typing.assert(place, str)
    typing.assert(fruit, List[str])
    ...

библиотека ввода


person Leevi L    schedule 20.01.2021    source источник
comment
Вы хотите, чтобы аннотация неявно означала утверждение времени выполнения, или вы хотите явное утверждение с использованием типов, предоставленных вручную? Вы ищете assert isinstance(hours, int)? Обратите внимание, что любая нетривиальная проверка, такая как isinstance(fruit, List[str]), будет мучительно медленной из-за O(n) или хуже.   -  person MisterMiyagi    schedule 20.01.2021
comment
Вы спрашиваете, как проверить тип объекта? typing предназначен для аннотаций типов, а не для проверки типов во время выполнения.   -  person juanpa.arrivillaga    schedule 20.01.2021
comment
List[str] это не type , это аннотация типа. Вам придется написать логику самостоятельно или использовать библиотеку, которая уже реализовала это, например pydantic, обратите внимание, проверка аннотации типа, такой как List[str], была бы действительно неэффективной.   -  person juanpa.arrivillaga    schedule 20.01.2021
comment
Поэтому вместо этого вам, вероятно, следует использовать стороннюю проверку статического типа, например mypy   -  person juanpa.arrivillaga    schedule 20.01.2021