Objects for Type Hinting¶
Предоставляются различные встроенные типы для аннотации типов. Только GenericAlias доступен в C API.
-
PyObject*
Py_GenericAlias(PyObject *origin, PyObject *args)¶ Создаёт объект 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[] = { // Другие методы. ... {"__class_getitem__", (PyCFunction)Py_GenericAlias, METH_O|METH_CLASS, "See PEP 585"} ... }
См. также
The data model method
__class_getitem__().Новое в версии 3.9.
-
PyTypeObject
Py_GenericAliasType¶ The C type of the object returned by
Py_GenericAlias(). Equivalent totypes.GenericAliasin Python.Новое в версии 3.9.