Python Glossary English

Python 3.7+typingпонятие

typing.ForwardRef

обобщения и параметры

Внутреннее представление строковой (отложенной) аннотации; хранит исходную строку в __forward_arg__.

Синтаксис

typing.ForwardRef('SomeType')

Руками его почти никогда не создают — ForwardRef появляется сам, когда строку (например 'Node' для ссылки на ещё не определённый класс) передают в обобщение typing: Optional['Node'] или List['Node']. Строковая аннотация функции при этом остаётся в __annotations__ обычной str, а list['Node'] тоже хранит строку. Разворачивает эти отложенные ссылки в настоящие типы уже typing.get_type_hints().

Примеры

# Python 3.9+
from typing import ForwardRef, Optional, get_type_hints
print(ForwardRef('int').__forward_arg__)   # → int
print(type(Optional['Node'].__args__[0]) is ForwardRef)   # → True
print(type(list['Node'].__args__[0]) is ForwardRef)   # → False
from typing import ForwardRef, Optional, get_type_hints
def f(x: 'int') -> None: pass
print(get_type_hints(f)['x'] is int)   # → True
print(isinstance(ForwardRef('int'), type))   # → False

См. также

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