AZL*_*sme 5 python annotations python-3.6
Python 3.6.1,在doc字符串或注释中有几种类型提示方式.如何使用注释实现此目的?
假设我有一个类,它有一个类方法load
从某个地方加载数据,例如json或数据库,并构造并返回该类的实例.
class Foo:
@classmethod
def load(cls, bar) -> Foo:
pass
Run Code Online (Sandbox Code Playgroud)
我认为这很简单,但是python解释器引发了一个错误,即没有定义Foo.
我知道原因,因为当python加载Foo的load函数签名时,Foo类的定义没有完成,所以Foo还没有定义.
这是函数注释的缺点吗?我能找到一些方法来实现这个目标,而不是使用doc string来输入提示,因为我真的很喜欢函数注释的清晰度.
您可以使用字符串文字进行前向引用:
import typing
class Foo:
@classmethod
def load(cls, bar) -> 'Foo':
pass
class Bar:
@classmethod
def load(cls, bar) -> Foo:
pass
print(typing.get_type_hints(Foo.load)) # {'return': <class '__main__.Foo'>}
print(typing.get_type_hints(Bar.load)) # {'return': <class '__main__.Foo'>}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
659 次 |
最近记录: |