Python 3.13 在这里:
class Test():
def __init__(self):
self.a: str = 'value a'
self.b: str = 'value b'
print(f'{dir(t)=}\n{dir(Test)=}\n{dir(t.__init__)=}')
的结果:
dir(t)=['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'a', 'b', 'c']
dir(Test)=['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
dir(t.__init__)=['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__func__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
无法为 a 和 b 找到任何
__annotations__
对象。哪里可以找到?
实例变量的类型注释必须在类级别完成。如果没有使用 ClassVar 显式标记,此类注释将被理解为与将在 init 中定义的实例变量相关。另请参阅 PEP 526 的相关部分和 ClassVar 的文档。