【发布时间】:2018-10-08 09:01:04
【问题描述】:
在 Python 3.7 中,静态字段可以使用 PEP 526 中定义的以下语法进行注释:
class A:
foo: int
在定义类之后,我以后如何进行这些注释?我希望以下工作:
A.bar : float
但是,它似乎与第一个代码的效果不同。当我们查看A 的__dict___ 时,这两个sn-ps 的效果并不相同。
在示例 1 之后 和 在示例 2 之后,我们得到相同的 __dict__,即第二个示例必须在其他地方显示效果。创建的字典是:
>> pprint(A.__dict__):
mappingproxy({'__annotations__': {'foo': <class 'int'>}, # <-!
'__dict__': <attribute '__dict__' of 'A' objects>,
'__doc__': None,
'__module__': '__main__',
'__weakref__': <attribute '__weakref__' of 'A' objects>})
我不认为编辑__annotations__ 是实现我想要的“好”方法,尤其是因为我不确定这是否是注册foo 的唯一情况。
这样做的正确方法是什么?
【问题讨论】:
标签: python class python-3.7 type-annotation