Spec-Zone.ru › Python 3.12

Объекты для аннотирования типов

Предоставляются различные встроенные типы для аннотирования типов. В настоящее время существуют два типа — 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, "See PEP 585"}
    ...
}

См. также

Метод модели данных __class_getitem__().

Добавлено в версии 3.9.

PyTypeObject Py_GenericAliasType
Входит в стабильный ABI начиная с версии 3.9.

Тип C объекта, возвращаемого Py_GenericAlias(). В Python эквивалентен types.GenericAlias.

Добавлено в версии 3.9.

© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/c-api/typehints.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API