Доступ к аннотациям типа Python 3 для переменных во время выполнения - PullRequest
1 голос
/ 11 июня 2019

Я хотел бы знать, возможно ли получить доступ к аннотациям типов для переменных во время выполнения так же, как вы можете использовать запись __annotations__ в inspect.getmembers() для методов и функций.

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

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

Спасибо.

1 Ответ

1 голос
/ 11 июня 2019

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...