type.md
1> **Источник:** https://python-all.ru/3.4/c-api/type.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Объекты типов89**`PyTypeObject`**1011C-структура объектов, используемая для описания встроенных типов.1213**[PyObject](https://python-all.ru/3.4/c-api/structures.html#c.PyObject)\* `PyType_Type`**1415Это объект типа для объектов типа; это тот же объект, что и [`type`](https://python-all.ru/3.4/library/functions.html#type) в слое Python.1617#### `int PyType_Check(PyObject *o)`1819Возвращает истину, если объект *o* является объектом типа, включая экземпляры типов, производных от стандартного объекта типа. В остальных случаях возвращает ложь.2021#### `int PyType_CheckExact(PyObject *o)`2223Возвращает истину, если объект *o* является объектом типа, но не подтипом стандартного объекта типа. В остальных случаях возвращает ложь.2425#### `unsigned int PyType_ClearCache()`2627Очищает внутренний кеш поиска. Возвращает текущий тег версии.2829#### `long PyType_GetFlags(PyTypeObject* type)`3031Возвращает элемент [`tp_flags`](https://python-all.ru/3.4/c-api/typeobj.html#c.PyTypeObject.tp_flags) структуры *type*. Эта функция в первую очередь предназначена для использования с *Py\_LIMITED\_API*; отдельные биты флагов гарантированно стабильны во всех версиях Python, однако доступ к [`tp_flags`](https://python-all.ru/3.4/c-api/typeobj.html#c.PyTypeObject.tp_flags) сам по себе не является частью ограниченного API.3233Новое в версии 3.2.3435#### `void PyType_Modified(PyTypeObject *type)`3637Аннулирует внутренний кеш поиска для типа и всех его подтипов. Эта функция должна вызываться после любого ручного изменения атрибутов или базовых классов типа.3839#### `int PyType_HasFeature(PyTypeObject *o, int feature)`4041Возвращает истину, если объект типа *o* устанавливает признак *feature*. Признаки типа задаются одноразрядными флагами.4243#### `int PyType_IS_GC(PyTypeObject *o)`4445Возвращает истину, если объект типа поддерживает детектор циклов; это проверяет флаг типа [`Py_TPFLAGS_HAVE_GC`](https://python-all.ru/3.4/c-api/typeobj.html#Py_TPFLAGS_HAVE_GC).4647#### `int PyType_IsSubtype(PyTypeObject *a, PyTypeObject *b)`4849Возвращает истину, если *a* является подтипом *b*.5051Эта функция проверяет только непосредственные подтипы, то есть [`__subclasscheck__()`](https://python-all.ru/3.4/reference/datamodel.html#class.__subclasscheck__) не вызывается для *b*. Вызовите [`PyObject_IsSubclass()`](https://python-all.ru/3.4/c-api/object.html#c.PyObject_IsSubclass), чтобы выполнить ту же проверку, что и [`issubclass()`](https://python-all.ru/3.4/library/functions.html#issubclass) делает.5253#### `PyObject* PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)`5455*Возвращаемое значение: новая ссылка.*5657Универсальный обработчик для слота [`tp_alloc`](https://python-all.ru/3.4/c-api/typeobj.html#c.PyTypeObject.tp_alloc) объекта типа. Использует стандартный механизм распределения памяти Python для выделения нового экземпляра и инициализации всего его содержимого значением *NULL*.5859#### `PyObject* PyType_GenericNew(PyTypeObject *type, PyObject *args, PyObject *kwds)`6061*Возвращаемое значение: новая ссылка.*6263Универсальный обработчик для слота [`tp_new`](https://python-all.ru/3.4/c-api/typeobj.html#c.PyTypeObject.tp_new) объекта типа. Создаёт новый экземпляр, используя слот [`tp_alloc`](https://python-all.ru/3.4/c-api/typeobj.html#c.PyTypeObject.tp_alloc) типа.6465#### `int PyType_Ready(PyTypeObject *type)`6667Завершает инициализацию объекта типа. Должна вызываться для всех объектов типа, чтобы завершить их инициализацию. Эта функция отвечает за добавление наследуемых слотов из базового класса. Возвращает `0` при успехе, или `-1` и устанавливает исключение при ошибке.6869#### `PyObject* PyType_FromSpec(PyType_Spec *spec)`7071Создаёт и возвращает объект типа в куче из *spec*, переданного функции.7273#### `PyObject* PyType_FromSpecWithBases(PyType_Spec *spec, PyObject *bases)`7475Создаёт и возвращает объект типа в куче из *spec*. Кроме того, созданный тип в куче содержит все типы из кортежа *bases* в качестве базовых типов. Это позволяет вызывающему коду ссылаться на другие типы в куче как на базовые типы.7677Новое в версии 3.3.7879#### `void* PyType_GetSlot(PyTypeObject *type, int slot)`8081Возвращает указатель на функцию, хранящийся в указанном слоте. Если результат равен *NULL*, это означает, что либо слот равен *NULL*, либо функция была вызвана с недопустимыми параметрами. Вызывающий код обычно приводит результирующий указатель к соответствующему типу функции.8283Новое в версии 3.4.84