Добавление аннотаций проверяемого типа с помощью декораторов - PullRequest
0 голосов
/ 10 июля 2020

Возможно ли иметь декоратор, который добавляет аннотации типов к функции, чтобы средства проверки типов c типа mypy могли обнаруживать нарушение?

В качестве простой попытки:

@returns(None)
def foo():
    return 3

Должен быть эквивалентен:

def foo() -> None:
    return 3

Однако mypy не может обнаружить нарушение типа, если returns определено как

def returns(type):
    def inner(func):
        func.__annotations__['return'] = type
        return func
    return inner

1 Ответ

0 голосов
/ 10 июля 2020

Вы не можете использовать декораторы. mypy выполняет stati c проверку типов, что означает, что все типы должны быть доступны во время компиляции . Декоратор добавляет аннотацию во время времени выполнения , что слишком поздно для mypy, чтобы использовать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...