Объекты для указания типа

Предусмотрены различные встроенные типы для указания типа. В настоящее время существует два типа - GenericAlias и Union. Только GenericAlias доступен для C.

PyObject *Py_GenericAlias(PyObject *origin, PyObject *args)
Part of the Стабильный ABI since version 3.9.

Создайте объект GenericAlias. Эквивалентно вызову класса Python types.GenericAlias. Аргументы origin и args задают атрибуты GenericAlias __origin__ и __args__ соответственно. origin должно быть a PyTypeObject*, а args может быть a : c:expr:PyTupleObject* или любым PyObject*. Если переданный args не является кортежем, автоматически создается 1-й кортеж и __args__ присваивается значение (args,). Для аргументов выполняется минимальная проверка, поэтому функция будет выполнена успешно, даже если origin не является типом. Атрибут GenericAlias````__parameters__ создается лениво из __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
Part of the Стабильный ABI since version 3.9.

Тип C объекта, возвращаемый с помощью Py_GenericAlias(). Эквивалентно types.GenericAlias в Python.

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

Вернуться на верх