Objects for Type Hinting¶
Various built-in types for type hinting are provided. Currently,
two types exist – GenericAlias and
Union. Only GenericAlias is exposed to C.
-
PyObject *
Py_GenericAlias(PyObject *origin, PyObject *args)¶ - Часть Stable 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[] = { // Другие методы. ... {"__class_getitem__", (PyCFunction)Py_GenericAlias, METH_O|METH_CLASS, "See PEP 585"} ... }
См. также
The data model method
__class_getitem__().Новое в версии 3.9.
-
PyTypeObject
Py_GenericAliasType¶ - Часть Stable ABI начиная с версии 3.9.
The C type of the object returned by
Py_GenericAlias(). Equivalent totypes.GenericAliasin Python.Новое в версии 3.9.