如何获取 class 成员的类型注释?

How to get type annotations for class members?

考虑以下代码:

from typing import Optional

class Foo:
    def __init__(self):
        self.baz: Optional[int] = None

如何在代码中找到 baz 的类型 Optional[int]?如果我这样做 type(Foo().baz),我只会得到 None

您可以在 class 正文中定义实例属性类型,如 PEP

中所述
from typing import Optional, get_type_hints

class Foo:
    baz: Optional[int]

    def __init__(self):
        self.baz = None


get_type_hints(Foo)

Out[26]: {'baz': typing.Union[int, NoneType]}

请注意 typing.Union[int, NoneType]Optional[int] 相同。