Spec-Zone.ru › Python 3.9

Объекты для подсказок типов

Предоставляются различные встроенные типы для подсказок типов. Только GenericAlias экспонируется для C.

PyObject* Py_GenericAlias(PyObject *origin, PyObject *args)

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

Тип C объекта, возвращаемого функцией Py_GenericAlias(). Эквивалентно types.GenericAlias в Python.

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

© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/c-api/typehints.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API