是否可以有一个装饰器来向函数添加类型注释,以便像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
答案 0 :(得分:0)
您不能使用装饰器。 mypy
进行静态类型检查,这意味着所有类型必须在编译时可用。装饰器在运行时添加注释,对于mypy
来说,使用注释已经太晚了。