在运行时访问变量的 Python 3 类型注释

Jos*_*lls 4 python annotations python-3.x

我想知道是否可以在运行时访问变量的类型注释,就像使用方法和函数的__annotations__条目一样inspect.getmembers()

> a:Optional[str]=None
> type(a)
<class 'NoneType'>

> a:str=None
> type(a)
<class 'NoneType'>
Run Code Online (Sandbox Code Playgroud)

谢谢。

Tre*_*edJ 5

locals()globals()跟踪__annotations__键中变量的注释。

>>> from typing import *
>>> a: Optional[int] = None
>>> locals()['__annotations__']
{'a': typing.Union[int, NoneType]}
>>> locals()['__annotations__']['a']
typing.Union[int, NoneType]
>>> 
>>> foo = 0
>>> bar: foo
>>> locals()['__annotations__']['bar']
0
>>>
>>> baz: List[str]
>>> locals()['__annotations__']['baz']
typing.List[str]
Run Code Online (Sandbox Code Playgroud)