【发布时间】:2017-06-13 03:16:43
【问题描述】:
打字模块是早期版本的 Python 推断输入和输出数据类型的后端端口。我在让它在 Python 2.7 中工作时遇到问题。
import typing
def greeting(name): # type: (str) -> str
"""documentations"""
return ('Hello ' + name)
print(greeting.__annotations__) # fails because doesn't exist.
我也试过这个:
import typing
def greeting(name # type: str
):
# type: (...) -> str
"""documentations"""
return ('Hello ' + name)
还有这个:
import typing
def greeting(name):
# type: (str) -> str
"""documentations"""
return ('Hello ' + name)
这应该根据 PEP484 在类上创建一个 __annotations__ 属性,但我根本没有看到这种情况发生。
我在使用反向移植代码时做错了什么?
【问题讨论】:
-
@khelwood 这不起作用,所以如果我用类型符号做我上面所做的事情,它就不起作用。
__annotations__永远不会在 3.5 版本或 2.7 中获得人口 -
您是否使用
mypy --py2 program.py之类的方式运行您的代码?如果您使用普通 Python 运行,则不会解释类型注释。 -
您仍然需要使用 mypy 运行它。 Python 3 以普通语法引入了类型注释,但注释的东西需要由 mypy 解释。
-
注意还有其他类型注解解释器。您不必使用 mypy。
标签: python python-2.7