Python Glossary English

Python 3.5+typingфункция

typing.get_type_hints

интроспекция

Возвращает словарь аннотаций объекта (функции/класса/модуля) с разрешёнными строковыми ссылками.

Синтаксис

typing.get_type_hints(obj)

Отличается от прямого чтения obj.__annotations__ тем, что вычисляет строковые аннотации в настоящие объекты: под from __future__ import annotations (PEP 563) все аннотации хранятся как строки, и get_type_hints превращает их обратно в типы (то же умеет annotationlib.get_annotations(obj, eval_str=True)), разрешая forward-ссылки в глобалах объекта (иначе NameError, если имя недоступно). Для класса вдобавок собирает аннотации по всей цепочке наследования, а метаданные Annotated по умолчанию отбрасывает — чтобы их сохранить, передай include_extras=True.

Примеры

from typing import get_type_hints
def f(x: int) -> bool: ...
print(get_type_hints(f)['x'] is int)   # → True
print(get_type_hints(f)['return'] is bool)   # → True
from typing import get_type_hints
def g(x: 'int') -> 'str': ...
print(g.__annotations__['x'])   # → int
print(get_type_hints(g)['x'] is int)   # → True
from typing import get_type_hints
class Point: x: int; y: int
print(sorted(get_type_hints(Point)))   # → ['x', 'y']
from typing import get_type_hints
def h(a, b): ...
print(get_type_hints(h))   # → {}

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности