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

---

# Объекты типов

**`PyTypeObject`**

C-структура объектов, используемая для описания встроенных типов.

**[PyObject](https://python-all.ru/3.3/c-api/structures.html#PyObject)\* `PyType_Type`**

Это объект типа для объектов типа; это тот же объект, что и [`type`](https://python-all.ru/3.3/library/functions.html#type) в слое Python.

#### `int PyType_Check(PyObject *o)`

Возвращает истину, если объект *o* является объектом типа, включая экземпляры типов, производных от стандартного объекта типа. В остальных случаях возвращает ложь.

#### `int PyType_CheckExact(PyObject *o)`

Возвращает истину, если объект *o* является объектом типа, но не подтипом стандартного объекта типа. В остальных случаях возвращает ложь.

#### `unsigned int PyType_ClearCache()`

Очищает внутренний кеш поиска. Возвращает текущий тег версии.

#### `long PyType_GetFlags(PyTypeObject* type)`

Возвращает элемент [`tp_flags`](https://python-all.ru/3.3/c-api/typeobj.html#PyTypeObject.tp_flags) структуры *type*. Эта функция в первую очередь предназначена для использования с *Py\_LIMITED\_API*; отдельные биты флагов гарантированно стабильны во всех версиях Python, однако доступ к [`tp_flags`](https://python-all.ru/3.3/c-api/typeobj.html#PyTypeObject.tp_flags) сам по себе не является частью ограниченного API.

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

#### `void PyType_Modified(PyTypeObject *type)`

Аннулирует внутренний кеш поиска для типа и всех его подтипов. Эта функция должна вызываться после любого ручного изменения атрибутов или базовых классов типа.

#### `int PyType_HasFeature(PyTypeObject *o, int feature)`

Возвращает истину, если объект типа *o* устанавливает признак *feature*. Признаки типа задаются одноразрядными флагами.

#### `int PyType_IS_GC(PyTypeObject *o)`

Возвращает истину, если объект типа поддерживает детектор циклов; это проверяет флаг типа [`Py_TPFLAGS_HAVE_GC`](https://python-all.ru/3.3/c-api/typeobj.html#Py_TPFLAGS_HAVE_GC).

#### `int PyType_IsSubtype(PyTypeObject *a, PyTypeObject *b)`

Возвращает истину, если *a* является подтипом *b*.

#### `PyObject* PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)`

*Возвращаемое значение: новая ссылка.*

Универсальный обработчик для слота [`tp_alloc`](https://python-all.ru/3.3/c-api/typeobj.html#PyTypeObject.tp_alloc) объекта типа. Использует стандартный механизм распределения памяти Python для выделения нового экземпляра и инициализации всего его содержимого значением *NULL*.

#### `PyObject* PyType_GenericNew(PyTypeObject *type, PyObject *args, PyObject *kwds)`

*Возвращаемое значение: новая ссылка.*

Универсальный обработчик для слота [`tp_new`](https://python-all.ru/3.3/c-api/typeobj.html#PyTypeObject.tp_new) объекта типа. Создаёт новый экземпляр, используя слот [`tp_alloc`](https://python-all.ru/3.3/c-api/typeobj.html#PyTypeObject.tp_alloc) типа.

#### `int PyType_Ready(PyTypeObject *type)`

Завершает инициализацию объекта типа. Должна вызываться для всех объектов типа, чтобы завершить их инициализацию. Эта функция отвечает за добавление наследуемых слотов из базового класса. Возвращает `0` при успехе, или `-1` и устанавливает исключение при ошибке.

#### `PyObject* PyType_FromSpec(PyType_Spec *spec)`

Создаёт и возвращает объект типа в куче из *spec*, переданного функции.

#### `PyObject* PyType_FromSpecWithBases(PyType_Spec *spec, PyObject *bases)`

Создаёт и возвращает объект типа в куче из *spec*. Кроме того, созданный тип в куче содержит все типы из кортежа *bases* в качестве базовых типов. Это позволяет вызывающему коду ссылаться на другие типы в куче как на базовые типы.

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