__annotations__ 用于实例变量

问题描述 投票:0回答:1

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__
对象。哪里可以找到?

python annotations python-3.13
1个回答
0
投票

实例变量的类型注释必须在类级别完成。如果没有使用 ClassVar 显式标记,此类注释将被理解为与将在 init 中定义的实例变量相关。另请参阅 PEP 526 的相关部分和 ClassVar 的文档。

© www.soinside.com 2019 - 2024. All rights reserved.