Python Glossary English

Python 3.9+Встроенные типыпонятие

types.GenericAlias

типы аннотаций

Тип выражения вроде list[int]: параметризованный встроенный класс для аннотаций, хранящий исходный класс и аргументы типа.

Синтаксис

list[int]  # → types.GenericAlias

list[int] не создаёт новый класс и ничего не проверяет во время выполнения: list[int]([1, 'a']) спокойно вернёт список со строкой. В isinstance такой объект передать нельзя — будет TypeError, проверяйте isinstance(x, list). Исходный класс и аргументы достают typing.get_origin и typing.get_args. С Python 3.9 встроенные коллекции поддерживают такую запись сами, без typing.List.

Примеры

import types
import typing
alias = list[int]
print(type(alias) is types.GenericAlias)   # → True
print(typing.get_origin(alias), typing.get_args(alias))   # → <class 'list'> (<class 'int'>,)
print(alias([1, 'a']))   # → [1, 'a'] — тип элементов не проверяется
isinstance([], list[int])   # → TypeError: параметризованный тип в isinstance нельзя

См. также

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

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