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

---

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

**`PyTypeObject`**

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

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

Это объект типа для типов; это тот же объект, что и `type` и `types.TypeType` в слое Python.

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

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

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

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

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

#### `unsigned int PyType_ClearCache()`

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

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

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

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

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

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

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

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

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

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

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

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

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

Эта функция проверяет только непосредственные подтипы, то есть [`__subclasscheck__()`](https://python-all.ru/2.7/reference/datamodel.html#class.__subclasscheck__) не вызывается для *b*. Вызовите [`PyObject_IsSubclass()`](https://python-all.ru/2.7/c-api/object.html#c.PyObject_IsSubclass), чтобы выполнить ту же проверку, что и [`issubclass()`](https://python-all.ru/2.7/library/functions.html#issubclass) .

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

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

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

Изменено в версии 2.5: Эта функция использовала тип `int` для *nitems*. Это может потребовать изменений в вашем коде для корректной поддержки 64-разрядных систем.

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

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

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

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

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

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