Объекты для подсказки типов¶
Для подсказки типов предусмотрены различные встроенные типы. В настоящее время существует два типа – GenericAlias и Union. Только GenericAlias
открыт для языка C.
-
PyObject *
Py_GenericAlias
(PyObject *origin, PyObject *args)¶ - Part of the Stable ABI since version 3.9.
Создайте объект GenericAlias. Эквивалентно вызову класса Python
types.GenericAlias
. Аргументы origin и args задают атрибутыGenericAlias
„__origin__
и__args__
соответственно. origin должен быть PyTypeObject*, а args может быть PyTupleObject* или любымPyObject*
. Если переданный args не является кортежем, автоматически строится кортеж 1, а__args__
устанавливается в(args,)
. Для аргументов выполняется минимальная проверка, поэтому функция будет успешной, даже если origin не является типом. АтрибутGenericAlias
„s__parameters__
строится лениво из__args__
. При неудаче выдается исключение и возвращаетсяNULL
.Вот пример того, как сделать тип расширения общим:
... static PyMethodDef my_obj_methods[] = { // Other methods. ... {"__class_getitem__", (PyCFunction)Py_GenericAlias, METH_O|METH_CLASS, "See PEP 585"} ... }
См.также
Метод модели данных
__class_getitem__()
.Добавлено в версии 3.9.
-
PyTypeObject
Py_GenericAliasType
¶ - Part of the Stable ABI since version 3.9.
C-тип объекта, возвращаемого
Py_GenericAlias()
. Эквивалентноtypes.GenericAlias
в Python.Добавлено в версии 3.9.