Объекты для указания типа¶
Предусмотрены различные встроенные типы для указания типа. В настоящее время существует два типа - 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.