При проверке во время выполнения аннотаций функции можно получить аннотацию class
для данного аргумента.Например:
>>> import inspect
>>> inspect.signature(f).parameters['a'].annotation
<class 'int'>
То же самое можно сделать, выполнив f.__annotations__
.
Однако, по причинам, которые я пощадил, я хотел бы получить аннотацию в читаемом текстовом формате.,Например: a: int
будет получено как int
, а не <class 'int'>
.Предположим, что текст должен быть допустимым в качестве ввода для eval
.
Я знаю, что могу сделать:
>>> str(inspect.signature(f).parameters['a'])
'a:int'
И затем обработать эту строку, используя .split
и тому подобное.Но мне интересно, есть ли лучший способ.