typehints.md
1> **Источник:** https://python-all.ru/3.9/c-api/typehints.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Objects for Type Hinting89Предоставляются различные встроенные типы для аннотации типов. Только [GenericAlias](https://python-all.ru/3.9/library/stdtypes.html#types-genericalias) доступен в C API.1011#### `PyObject* Py_GenericAlias(PyObject *origin, PyObject *args)`1213Создаёт объект [GenericAlias](https://python-all.ru/3.9/library/stdtypes.html#types-genericalias). Эквивалентно вызову класса Python [`types.GenericAlias`](https://python-all.ru/3.9/library/types.html#types.GenericAlias). Аргументы *origin* и *args* задают атрибуты `__origin__` и `__args__` объекта `GenericAlias` соответственно. *origin* должен быть [`PyTypeObject*`](https://python-all.ru/3.9/c-api/type.html#c.PyTypeObject), а *args* может быть [`PyTupleObject*`](https://python-all.ru/3.9/c-api/tuple.html#c.PyTupleObject) или любым `PyObject*`. Если переданный *args* не является кортежем, автоматически создаётся кортеж из одного элемента и `__args__` устанавливается в `(args,)`. Проведена минимальная проверка аргументов, поэтому функция сработает, даже если *origin* не является типом. Атрибут `__parameters__` объекта `GenericAlias` создаётся лениво из `__args__`. При ошибке возбуждается исключение и возвращается `NULL`.1415Вот пример того, как сделать тип расширения обобщённым:1617```c18...19static PyMethodDef my_obj_methods[] = {20 // Другие методы.21 ...22 {"__class_getitem__", (PyCFunction)Py_GenericAlias, METH_O|METH_CLASS, "See PEP 585"}23 ...24}25```2627> **См. также**28>29> The data model method [`__class_getitem__()`](https://python-all.ru/3.9/reference/datamodel.html#object.__class_getitem__).3031Новое в версии 3.9.3233**[PyTypeObject](https://python-all.ru/3.9/c-api/type.html#c.PyTypeObject) `Py_GenericAliasType`**3435The C type of the object returned by [`Py_GenericAlias()`](https://python-all.ru/3.9/c-api/typehints.html#c.Py_GenericAlias). Equivalent to [`types.GenericAlias`](https://python-all.ru/3.9/library/types.html#types.GenericAlias) in Python.3637Новое в версии 3.9.38