Python 3.12+astпонятие
ast.type_param
параметры типов
Абстрактный базовый класс параметров типа PEP 695: TypeVar, ParamSpec, TypeVarTuple. Поле type_params у def, class и type. Появился в 3.12.
Синтаксис
isinstance(p, ast.type_param)
Список type_params есть у FunctionDef, ClassDef и TypeAlias с 3.12; в старом стиле (T = TypeVar('T') и Generic[T]) он пуст — там обычные Assign и Call. Вид параметра определяется синтаксисом: T — TypeVar, *Ts — TypeVarTuple, **P — ParamSpec; граница T: int лежит в TypeVar.bound.
Примеры
import ast
f = ast.parse('def f[T: int, *Ts, **P](x): pass').body[0]
print([type(p).__name__ for p in f.type_params]) # → ['TypeVar', 'TypeVarTuple', 'ParamSpec']
print(f.type_params[0].name, ast.unparse(f.type_params[0].bound)) # → T int
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности