Документация Python неофициальный перевод

typehints.md

42 строк · 3.0 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.10/c-api/typehints.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Objects for Type Hinting89Various built-in types for type hinting are provided. Currently, two types exist – [GenericAlias](https://python-all.ru/3.10/library/stdtypes.html#types-genericalias) and [Union](https://python-all.ru/3.10/library/stdtypes.html#types-union). Only `GenericAlias` is exposed to C.1011#### `PyObject *Py_GenericAlias(PyObject *origin, PyObject *args)`1213*Часть [Stable ABI](https://python-all.ru/3.10/c-api/stable.html#stable) начиная с версии 3.9.*1415Создаёт объект [GenericAlias](https://python-all.ru/3.10/library/stdtypes.html#types-genericalias). Эквивалентно вызову класса Python [`types.GenericAlias`](https://python-all.ru/3.10/library/types.html#types.GenericAlias). Аргументы *origin* и *args* задают соответственно атрибуты `__origin__` и `__args__` объекта `GenericAlias`. *origin* должен быть `PyTypeObject*`, а *args* может быть `PyTupleObject*` или любым `PyObject*`. Если переданный *args* не является кортежем, автоматически создаётся кортеж из одного элемента и `__args__` устанавливается в `(args,)`. Проверка аргументов минимальна, поэтому функция выполнится успешно, даже если *origin* не является типом. Атрибут `__parameters__` объекта `GenericAlias` создаётся лениво из `__args__`. В случае неудачи возникает исключение и возвращается `NULL`.1617Вот пример того, как сделать тип расширения обобщённым:1819```c20...21static PyMethodDef my_obj_methods[] = {22    // Другие методы.23    ...24    {"__class_getitem__", (PyCFunction)Py_GenericAlias, METH_O|METH_CLASS, "See PEP 585"}25    ...26}27```2829> **См. также**30>31> The data model method `__class_getitem__()`.3233Новое в версии 3.9.3435#### `PyTypeObject Py_GenericAliasType`3637*Часть [Stable ABI](https://python-all.ru/3.10/c-api/stable.html#stable) начиная с версии 3.9.*3839The C type of the object returned by [`Py_GenericAlias()`](https://python-all.ru/3.10/c-api/typehints.html#c.Py_GenericAlias). Equivalent to [`types.GenericAlias`](https://python-all.ru/3.10/library/types.html#types.GenericAlias) in Python.4041Новое в версии 3.9.42