typing模块是Python早期版本推断输入和输出数据类型的后端端口。我在Python2.7中遇到了一个问题。在
import typing
def greeting(name): # type: (str) -> str
"""documentations"""
return ('Hello ' + name)
print(greeting.__annotations__) # fails because doesn't exist.
我也试过这个:
^{pr2}$还有这个:
import typing
def greeting(name):
# type: (str) -> str
"""documentations"""
return ('Hello ' + name)
根据PEP484,这应该在类上创建一个__annotations__
属性,但我根本看不到这种情况。在
我的后台代码怎么了?在
typing
是python3.5中引入的一个模块。pep484中的示例依赖于python3+,而__annotations__
是python3的概念。backport只允许使用typing
模块中定义的函数类型,但它不会改变Python引擎以神奇地理解所有python3概念。在另一个SO post中的讨论表明,应该可以通过使用} 模块,它应该能够解析python2.7风格的注释。不幸的是,它只在beta级别声明,并且只与python3兼容。在
inspect.getsourcelines
来研究函数声明之后的第一行,并从#type开始来访问注释。pypi上存在一个^{相关问题 更多 >
编程相关推荐