Python Glossary English

Python 3.12+astпонятие

ast.TypeVar

параметры типов

Узел параметра типа T в квадратных скобках def f[T](), class C[T], type A[T] (Python 3.12): name, bound и с 3.13 default_value.

Синтаксис

ast.TypeVar(name, bound=None, default_value=None)

name здесь — строка, а не Name. В поле bound лежит и граница T: int (Name), и набор ограничений T: (int, str) — тогда это Tuple, так что «верхняя граница» и «перечень допустимых типов» различаются только типом узла. Поле default_value для T = int добавлено в 3.13; на 3.12 его нет вовсе. Старый способ T = TypeVar('T') в ast — обычный Assign с Call.

Примеры

import ast
f = ast.parse('def first[T: int](xs: list[T]) -> T: ...').body[0]
tv = f.type_params[0]
print(type(tv).__name__, tv.name, tv.bound.id)  # → TypeVar T int
c = ast.parse('class Box[T: (int, str)]: pass').body[0]
print(type(c.type_params[0].bound).__name__)  # → Tuple

См. также

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