Объекты для аннотирования типов
Предоставляются различные встроенные типы для аннотирования типов. В настоящее время существуют два типа — GenericAlias и Union. Только GenericAlias доступен в C.
-
PyObject *Py_GenericAlias(PyObject *origin, PyObject *args) -
Входит в стабильный ABI начиная с версии 3.9.
Создаёт объект GenericAlias. Эквивалентно вызову класса Python
types.GenericAlias. Аргументы origin и args задают соответственно атрибуты__origin__и__args__объектаGenericAlias. origin должен быть PyTypeObject*, а args может быть PyTupleObject* или любымPyObject*. Если переданный args не является кортежем, автоматически создаётся кортеж из одного элемента, а__args__устанавливается в(args,). Проверка аргументов выполняется минимальная, поэтому функция успешно завершится, даже если origin не является типом. Атрибут__parameters__объектаGenericAliasсоздаётся лениво на основе__args__. В случае ошибки возбуждается исключение и возвращаетсяNULL.Ниже приведён пример того, как сделать тип расширения обобщённым:
... static PyMethodDef my_obj_methods[] = { // Other methods. ... {"__class_getitem__", Py_GenericAlias, METH_O|METH_CLASS, "my_obj is generic over its contained type"} ... }См. также
Метод модели данных
__class_getitem__().Добавлено в версии 3.9.
-
PyTypeObject Py_GenericAliasType -
Входит в стабильный ABI начиная с версии 3.9.
Тип C объекта, возвращаемого
Py_GenericAlias(). Эквивалентенtypes.GenericAliasв Python.Добавлено в версии 3.9.
© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/c-api/typehints.html