使用装饰器添加可检查的类型注释

时间:2020-07-10 18:39:08

标签: python mypy python-typing

是否可以有一个装饰器来向函数添加类型注释,以便像mypy这样的静态类型检查器可以检测到冲突?

一个简单的尝试:

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

应等同于:

def foo() -> None:
    return 3

然而,mypy被定义为{p>时,returns无法检测到类型冲突

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

1 个答案:

答案 0 :(得分:0)

您不能使用装饰器。 mypy进行静态类型检查,这意味着所有类型必须在编译时可用。装饰器在运行时添加注释,对于mypy来说,使用注释已经太晚了。

相关问题