> **Источник:** https://python-all.ru/3.10/c-api/typehints.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# Objects for Type Hinting

Various 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.

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

*Часть [Stable ABI](https://python-all.ru/3.10/c-api/stable.html#stable) начиная с версии 3.9.*

Создаёт объект [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`.

Вот пример того, как сделать тип расширения обобщённым:

```c
...
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](https://python-all.ru/3.10/c-api/stable.html#stable) начиная с версии 3.9.*

The 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.

Новое в версии 3.9.
