Python 3.14+typingфункция
typing.evaluate_forward_ref()
интроспекция аннотаций
Вычисляет ForwardRef (отложенную строковую аннотацию) в реальный тип, рекурсивно раскрывая вложенные ссылки. Python 3.14+.
Синтаксис
typing.evaluate_forward_ref(forward_ref, *, owner=None, globals=None, locals=None, type_params=None, format=annotationlib.Format.VALUE)
Напрямую её вызывать приходится редко: аннотации целой функции или класса разворачивает typing.get_type_hints(), а эта функция нужна, когда на руках отдельный ForwardRef, вынутый из чужой аннотации. Имя ищется в переданных owner/globals/locals — если оно там не видно, будет NameError; с format=annotationlib.Format.FORWARDREF ссылка вместо ошибки останется нераскрытой.
Примеры
import typing
ref = typing.ForwardRef('int')
print(typing.evaluate_forward_ref(ref)) # → <class 'int'>
print(typing.evaluate_forward_ref(typing.ForwardRef('list[int]'))) # → list[int]
print(typing.evaluate_forward_ref(typing.ForwardRef('T'), globals={'T': str})) # → <class 'str'>
print(typing.evaluate_forward_ref(ref) is int) # → True
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности