Документация Python неофициальный перевод

object.md

656 строк · 58.5 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.16/c-api/object.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Протокол объектов89#### `PyObject *Py_GetConstant(unsigned int constant_id)`1011*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable), начиная с версии 3.13.*1213Получить [сильную ссылку](https://python-all.ru/3.16/glossary.html#term-strong-reference) на константу.1415Установить исключение и вернуть `NULL`, если *constant\_id* недействителен.1617*constant\_id* должен быть одним из следующих идентификаторов констант:1819| Идентификатор константы | Значение | Возвращаемый объект |20| --- | --- | --- |21| Py\_CONSTANT\_NONE | `0` | [`None`](https://python-all.ru/3.16/library/constants.html#None) |22| Py\_CONSTANT\_FALSE | `1` | [`False`](https://python-all.ru/3.16/library/constants.html#False) |23| Py\_CONSTANT\_TRUE | `2` | [`True`](https://python-all.ru/3.16/library/constants.html#True) |24| Py\_CONSTANT\_ELLIPSIS | `3` | [`Ellipsis`](https://python-all.ru/3.16/library/constants.html#Ellipsis) |25| Py\_CONSTANT\_NOT\_IMPLEMENTED | `4` | [`NotImplemented`](https://python-all.ru/3.16/library/constants.html#NotImplemented) |26| Py\_CONSTANT\_ZERO | `5` | `0` |27| Py\_CONSTANT\_ONE | `6` | `1` |28| Py\_CONSTANT\_EMPTY\_STR | `7` | `''` |29| Py\_CONSTANT\_EMPTY\_BYTES | `8` | `b''` |30| Py\_CONSTANT\_EMPTY\_TUPLE | `9` | `()` |3132Числовые значения приведены только для проектов, которые не могут использовать идентификаторы констант.3334Добавлено в версии 3.13.3536**Особенность реализации CPython:** В CPython все эти константы являются [бессмертными](https://python-all.ru/3.16/glossary.html#term-immortal).3738#### `PyObject *Py_GetConstantBorrowed(unsigned int constant_id)`3940*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable), начиная с версии 3.13.*4142Подобно [`Py_GetConstant()`](https://python-all.ru/3.16/c-api/object.html#c.Py_GetConstant), но возвращает [заимствованную ссылку](https://python-all.ru/3.16/glossary.html#term-borrowed-reference).4344Эта функция в первую очередь предназначена для обратной совместимости: для нового кода рекомендуется использовать [`Py_GetConstant()`](https://python-all.ru/3.16/c-api/object.html#c.Py_GetConstant).4546Ссылка заимствована из интерпретатора и действительна до завершения работы интерпретатора.4748Добавлено в версии 3.13.4950#### `PyObject *Py_NotImplemented`5152Синглтон `NotImplemented`, используемый для указания, что операция не реализована для данной комбинации типов.5354#### `Py_RETURN_NOTIMPLEMENTED`5556Правильно обрабатывает возврат [`Py_NotImplemented`](https://python-all.ru/3.16/c-api/object.html#c.Py_NotImplemented) из C-функции (то есть создаёт новую [сильную ссылку](https://python-all.ru/3.16/glossary.html#term-strong-reference) на [`NotImplemented`](https://python-all.ru/3.16/library/constants.html#NotImplemented) и возвращает её).5758#### `Py_PRINT_RAW`5960Флаг, используемый с несколькими функциями, которые выводят объект (например, [`PyObject_Print()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_Print) и [`PyFile_WriteObject()`](https://python-all.ru/3.16/c-api/file.html#c.PyFile_WriteObject)). Если передан, эти функции используют [`str()`](https://python-all.ru/3.16/library/stdtypes.html#str) объекта вместо [`repr()`](https://python-all.ru/3.16/library/functions.html#repr).6162#### `int PyObject_Print(PyObject *o, FILE *fp, int flags)`6364Выводит объект *o* в файл *fp*. В случае ошибки возвращает `-1`. Аргумент flags используется для включения определённых параметров вывода. Единственный поддерживаемый в настоящее время параметр – [`Py_PRINT_RAW`](https://python-all.ru/3.16/c-api/object.html#c.Py_PRINT_RAW); если он указан, записывается [`str()`](https://python-all.ru/3.16/library/stdtypes.html#str) объекта вместо [`repr()`](https://python-all.ru/3.16/library/functions.html#repr).6566#### `void PyObject_Dump(PyObject *op)`6768Выводит дамп объекта *op* в `stderr`. Это следует использовать только для отладки.6970Вывод предназначен для попытки дампа объектов даже после повреждения памяти:7172- Информация записывается, начиная с полей, которые с наименьшей вероятностью приведут к сбою при обращении.73- Эта функция может быть вызвана без [прикреплённого состояния потока](https://python-all.ru/3.16/glossary.html#term-attached-thread-state), но делать это не рекомендуется: это может привести к взаимоблокировкам.74- Объект, не принадлежащий текущему интерпретатору, может быть сброшен, но это также может вызвать сбои или нежелательное поведение.75- Реализует эвристику для проверки, была ли освобождена память объекта. В этом случае содержимое объекта не выводится, только его адрес в памяти.76- Формат вывода может измениться в любой момент.7778Пример вывода:7980```output81object address  : 0x7f80124702c082object refcount : 283object type     : 0x9902e084object type name: str85object repr     : 'abcdef'86```8788Добавлено в версии 3.15.8990#### `int PyObject_HasAttrWithError(PyObject *o, PyObject *attr_name)`9192*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable), начиная с версии 3.13.*9394Возвращает `1`, если *o* имеет атрибут *attr\_name*, и `0` в противном случае. Это эквивалентно выражению Python `hasattr(o, attr_name)`. В случае ошибки возвращает `-1`.9596Добавлено в версии 3.13.9798#### `int PyObject_HasAttrStringWithError(PyObject *o, const char *attr_name)`99100*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable), начиная с версии 3.13.*101102То же, что и [`PyObject_HasAttrWithError()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_HasAttrWithError), но *attr\_name* задаётся как const char\* строка байтов в кодировке UTF-8, а не как [PyObject](https://python-all.ru/3.16/c-api/structures.html#c.PyObject)\*.103104Добавлено в версии 3.13.105106#### `int PyObject_HasAttr(PyObject *o, PyObject *attr_name)`107108*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*109110Возвращает `1`, если *o* имеет атрибут *attr\_name*, и `0` в противном случае. Эта функция всегда завершается успешно.111112> **Примечание**113>114> Исключения, возникающие при вызове методов [`__getattr__()`](https://python-all.ru/3.16/reference/datamodel.html#object.__getattr__) и [`__getattribute__()`](https://python-all.ru/3.16/reference/datamodel.html#object.__getattribute__), не распространяются, а вместо этого передаются в [`sys.unraisablehook()`](https://python-all.ru/3.16/library/sys.html#sys.unraisablehook). Для корректной обработки ошибок используйте [`PyObject_HasAttrWithError()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_HasAttrWithError), [`PyObject_GetOptionalAttr()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_GetOptionalAttr) или [`PyObject_GetAttr()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_GetAttr).115116#### `int PyObject_HasAttrString(PyObject *o, const char *attr_name)`117118*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*119120То же, что и [`PyObject_HasAttr()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_HasAttr), но *attr\_name* задаётся как const char\* строка байтов в кодировке UTF-8, а не как [PyObject](https://python-all.ru/3.16/c-api/structures.html#c.PyObject)\*.121122> **Примечание**123>124> Исключения, возникающие при вызове методов [`__getattr__()`](https://python-all.ru/3.16/reference/datamodel.html#object.__getattr__) и [`__getattribute__()`](https://python-all.ru/3.16/reference/datamodel.html#object.__getattribute__) или при создании временного объекта [`str`](https://python-all.ru/3.16/library/stdtypes.html#str), молча игнорируются. Для корректной обработки ошибок используйте [`PyObject_HasAttrStringWithError()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_HasAttrStringWithError), [`PyObject_GetOptionalAttrString()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_GetOptionalAttrString) или [`PyObject_GetAttrString()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_GetAttrString).125126#### `PyObject *PyObject_GetAttr(PyObject *o, PyObject *attr_name)`127128*Возвращаемое значение: новая ссылка.*129130*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*131132Извлекает атрибут с именем *attr\_name* из объекта *o*. Возвращает значение атрибута в случае успеха или `NULL` в случае ошибки. Это эквивалентно выражению Python `o.attr_name`.133134Если отсутствие атрибута не должно рассматриваться как ошибка, можно использовать [`PyObject_GetOptionalAttr()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_GetOptionalAttr).135136#### `PyObject *PyObject_GetAttrString(PyObject *o, const char *attr_name)`137138*Возвращаемое значение: новая ссылка.*139140*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*141142То же, что и [`PyObject_GetAttr()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_GetAttr), но *attr\_name* задаётся как const char\* строка байтов в кодировке UTF-8, а не как [PyObject](https://python-all.ru/3.16/c-api/structures.html#c.PyObject)\*.143144Если отсутствие атрибута не должно рассматриваться как ошибка, можно использовать [`PyObject_GetOptionalAttrString()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_GetOptionalAttrString).145146#### `int PyObject_GetOptionalAttr(PyObject *obj, PyObject *attr_name, PyObject **result);`147148*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable), начиная с версии 3.13.*149150Вариант [`PyObject_GetAttr()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_GetAttr), который не вызывает [`AttributeError`](https://python-all.ru/3.16/library/exceptions.html#AttributeError), если атрибут не найден.151152Если атрибут найден, возвращает `1` и устанавливает *\*result* в новую [строгую ссылку](https://python-all.ru/3.16/glossary.html#term-strong-reference) на атрибут. Если атрибут не найден, возвращает `0` и устанавливает *\*result* в `NULL`; [`AttributeError`](https://python-all.ru/3.16/library/exceptions.html#AttributeError) при этом игнорируется. Если возникла ошибка, отличная от `AttributeError`, возвращает `-1` и устанавливает *\*result* в `NULL`.153154Добавлено в версии 3.13.155156#### `int PyObject_GetOptionalAttrString(PyObject *obj, const char *attr_name, PyObject **result);`157158*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable), начиная с версии 3.13.*159160То же, что и [`PyObject_GetOptionalAttr()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_GetOptionalAttr), но *attr\_name* задаётся как const char\* строка байтов в кодировке UTF-8, а не как [PyObject](https://python-all.ru/3.16/c-api/structures.html#c.PyObject)\*.161162Добавлено в версии 3.13.163164#### `PyObject *PyObject_GenericGetAttr(PyObject *o, PyObject *name)`165166*Возвращаемое значение: новая ссылка.*167168*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*169170Обобщённая функция получения атрибута, предназначенная для размещения в слоте `tp_getattro` объекта типа. Она ищет дескриптор в словаре классов в MRO объекта, а также атрибут в [`__dict__`](https://python-all.ru/3.16/reference/datamodel.html#object.__dict__) объекта (если он есть). Как описано в [Реализация дескрипторов](https://python-all.ru/3.16/reference/datamodel.html#descriptors), дескрипторы данных имеют приоритет над атрибутами экземпляра, а дескрипторы не данных – нет. В противном случае вызывается [`AttributeError`](https://python-all.ru/3.16/library/exceptions.html#AttributeError).171172#### `int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v)`173174*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*175176Устанавливает значение атрибута с именем *attr\_name* для объекта *o* равным значению *v*. В случае ошибки возбуждает исключение и возвращает `-1`; при успехе возвращает `0`. Это эквивалент инструкции Python `o.attr_name = v`.177178Если *v* равно `NULL`, атрибут удаляется. Такое поведение устарело в пользу использования [`PyObject_DelAttr()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_DelAttr), однако в настоящее время нет планов по его удалению.179180Функцию нельзя вызывать с `NULL` *v*, если уже установлено исключение. Такая ситуация может возникнуть из-за отсутствия проверок `NULL` и приведёт к удалению атрибута.181182Изменено в версии 3.15: Нельзя вызывать со значением NULL, если установлено исключение.183184#### `int PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v)`185186*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*187188То же, что и [`PyObject_SetAttr()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_SetAttr), но *attr\_name* задаётся в виде const char\* UTF-8 строки байтов, а не [PyObject](https://python-all.ru/3.16/c-api/structures.html#c.PyObject)\*.189190Если *v* равно `NULL`, атрибут удаляется, но эта возможность устарела в пользу использования [`PyObject_DelAttrString()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_DelAttrString).191192Функцию нельзя вызывать с `NULL` *v*, если уже установлено исключение. Такая ситуация может возникнуть из-за отсутствия проверок `NULL` и приведёт к удалению атрибута.193194Количество различных имён атрибутов, передаваемых в эту функцию, должно быть небольшим; обычно для этого используется статически выделенная строка в качестве *attr\_name*. Для имён атрибутов, неизвестных на этапе компиляции, предпочтительнее напрямую вызывать [`PyUnicode_FromString()`](https://python-all.ru/3.16/c-api/unicode.html#c.PyUnicode_FromString) и [`PyObject_SetAttr()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_SetAttr). Подробнее см. [`PyUnicode_InternFromString()`](https://python-all.ru/3.16/c-api/unicode.html#c.PyUnicode_InternFromString), который может использоваться внутри для создания объекта ключа.195196Изменено в версии 3.15: Нельзя вызывать со значением NULL, если установлено исключение.197198#### `int PyObject_GenericSetAttr(PyObject *o, PyObject *name, PyObject *value)`199200*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*201202Универсальная функция установки и удаления атрибута, предназначенная для помещения в слот [`tp_setattro`](https://python-all.ru/3.16/c-api/typeobj.html#c.PyTypeObject.tp_setattro) объекта типа. Она ищет дескриптор данных в словаре классов в MRO объекта, и если он найден, то приоритет имеет установка или удаление атрибута в словаре экземпляра. В противном случае атрибут устанавливается или удаляется в [`__dict__`](https://python-all.ru/3.16/reference/datamodel.html#object.__dict__) объекта (если он есть). При успехе возвращается `0`, иначе возбуждается [`AttributeError`](https://python-all.ru/3.16/library/exceptions.html#AttributeError) и возвращается `-1`.203204#### `int PyObject_DelAttr(PyObject *o, PyObject *attr_name)`205206*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable), начиная с версии 3.13.*207208Удаляет атрибут с именем *attr\_name* у объекта *o*. При ошибке возвращает `-1`. Это эквивалент инструкции Python `del o.attr_name`.209210#### `int PyObject_DelAttrString(PyObject *o, const char *attr_name)`211212*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable), начиная с версии 3.13.*213214То же, что и [`PyObject_DelAttr()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_DelAttr), но *attr\_name* задаётся в виде const char\* UTF-8 строки байтов, а не [PyObject](https://python-all.ru/3.16/c-api/structures.html#c.PyObject)\*.215216Количество различных имён атрибутов, передаваемых в эту функцию, должно быть небольшим; обычно для этого используется статически выделенная строка в качестве *attr\_name*. Для имён атрибутов, неизвестных на этапе компиляции, предпочтительнее напрямую вызывать [`PyUnicode_FromString()`](https://python-all.ru/3.16/c-api/unicode.html#c.PyUnicode_FromString) и [`PyObject_DelAttr()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_DelAttr). Подробнее см. [`PyUnicode_InternFromString()`](https://python-all.ru/3.16/c-api/unicode.html#c.PyUnicode_InternFromString), который может использоваться внутри для создания объекта ключа для поиска.217218#### `PyObject *PyObject_GenericGetDict(PyObject *o, void *context)`219220*Возвращаемое значение: новая ссылка.*221222*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable) начиная с версии 3.10.*223224Универсальная реализация геттера дескриптора `__dict__`. При необходимости создаёт словарь.225226Эту функцию также можно вызывать для получения [`__dict__`](https://python-all.ru/3.16/reference/datamodel.html#object.__dict__) объекта *o*. При вызове передайте `NULL` для *context*. Поскольку эта функция может выделять память для словаря, при обращении к атрибуту объекта эффективнее вызывать [`PyObject_GetAttr()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_GetAttr).227228В случае ошибки возвращает `NULL` с установленным исключением.229230Добавлено в версии 3.3.231232#### `int PyObject_GenericSetDict(PyObject *o, PyObject *value, void *context)`233234*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable) начиная с версии 3.7.*235236Универсальная реализация сеттера дескриптора `__dict__`. Эта реализация не позволяет удалять словарь.237238Добавлено в версии 3.3.239240#### `PyObject **_PyObject_GetDictPtr(PyObject *obj)`241242Возвращает указатель на [`__dict__`](https://python-all.ru/3.16/reference/datamodel.html#object.__dict__) объекта *obj*. Если `__dict__` отсутствует, возвращает `NULL` без установки исключения.243244Эта функция может выделять память для словаря, поэтому при обращении к атрибуту объекта эффективнее вызывать [`PyObject_GetAttr()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_GetAttr).245246#### `PyObject *PyObject_RichCompare(PyObject *o1, PyObject *o2, int opid)`247248*Возвращаемое значение: новая ссылка.*249250*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*251252Сравнивает значения *o1* и *o2* с помощью операции, заданной *opid*, которая должна быть одной из [`Py_LT`](https://python-all.ru/3.16/c-api/typeobj.html#c.Py_LT), [`Py_LE`](https://python-all.ru/3.16/c-api/typeobj.html#c.Py_LE), [`Py_EQ`](https://python-all.ru/3.16/c-api/typeobj.html#c.Py_EQ), [`Py_NE`](https://python-all.ru/3.16/c-api/typeobj.html#c.Py_NE), [`Py_GT`](https://python-all.ru/3.16/c-api/typeobj.html#c.Py_GT) или [`Py_GE`](https://python-all.ru/3.16/c-api/typeobj.html#c.Py_GE), соответствующих `<`, `<=`, `==`, `!=`, `>` или `>=` соответственно. Это эквивалент выражения Python `o1 op o2`, где `op` – оператор, соответствующий *opid*. При успехе возвращает результат сравнения, при ошибке – `NULL`.253254#### `int PyObject_RichCompareBool(PyObject *o1, PyObject *o2, int opid)`255256*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*257258Сравнивает значения *o1* и *o2* с помощью операции, заданной *opid*, как [`PyObject_RichCompare()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_RichCompare), но возвращает `-1` при ошибке, `0` если результат ложный, и `1` в противном случае.259260> **Примечание**261>262> Если *o1* и *o2* – один и тот же объект, [`PyObject_RichCompareBool()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_RichCompareBool) всегда будет возвращать `1` для [`Py_EQ`](https://python-all.ru/3.16/c-api/typeobj.html#c.Py_EQ) и `0` для [`Py_NE`](https://python-all.ru/3.16/c-api/typeobj.html#c.Py_NE).263264#### `PyObject *PyObject_Format(PyObject *obj, PyObject *format_spec)`265266*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*267268Форматирует *obj* с помощью *format\_spec*. Эквивалентно выражению Python `format(obj, format_spec)`.269270*format\_spec* может быть `NULL`. В этом случае вызов эквивалентен `format(obj)`. Возвращает форматированную строку в случае успеха и `NULL` при неудаче.271272#### `PyObject *PyObject_Repr(PyObject *o)`273274*Возвращаемое значение: новая ссылка.*275276*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*277278Вычисляет строковое представление объекта *o*. Возвращает строковое представление в случае успеха и `NULL` при неудаче. Это эквивалент выражения Python `repr(o)`. Вызывается встроенной функцией [`repr()`](https://python-all.ru/3.16/library/functions.html#repr).279280Если аргумент равен `NULL`, возвращает строку `'<NULL>'`.281282Изменено в версии 3.4: Эта функция теперь включает отладочное утверждение, помогающее гарантировать, что она не игнорирует активное исключение без уведомления.283284#### `PyObject *PyObject_ASCII(PyObject *o)`285286*Возвращаемое значение: новая ссылка.*287288*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*289290Как и [`PyObject_Repr()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_Repr), вычисляет строковое представление объекта *o*, но экранирует не-ASCII символы в строке, возвращаемой `PyObject_Repr()`, с помощью управляющих последовательностей `\x`, `\u` или `\U`. Это создаёт строку, похожую на ту, что возвращается `PyObject_Repr()` в Python 2. Вызывается встроенной функцией [`ascii()`](https://python-all.ru/3.16/library/functions.html#ascii).291292Если аргумент равен `NULL`, возвращает строку `'<NULL>'`.293294#### `PyObject *PyObject_Str(PyObject *o)`295296*Возвращаемое значение: новая ссылка.*297298*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*299300Вычисляет строковое представление объекта *o*. Возвращает строковое представление в случае успеха и `NULL` при неудаче. Это эквивалент выражения Python `str(o)`. Вызывается встроенной функцией [`str()`](https://python-all.ru/3.16/library/stdtypes.html#str) и, следовательно, функцией [`print()`](https://python-all.ru/3.16/library/functions.html#print).301302Если аргумент равен `NULL`, возвращает строку `'<NULL>'`.303304Изменено в версии 3.4: Эта функция теперь включает отладочное утверждение, помогающее гарантировать, что она не игнорирует активное исключение без уведомления.305306#### `PyObject *PyObject_Bytes(PyObject *o)`307308*Возвращаемое значение: новая ссылка.*309310*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*311312Вычисляет байтовое представление объекта *o*. При неудаче возвращается `NULL`, а при успехе – объект bytes. Это эквивалентно выражению Python `bytes(o)`, когда *o* не является целым числом. В отличие от `bytes(o)`, возникает TypeError, когда *o* является целым числом вместо объекта bytes, инициализированного нулями.313314Если аргумент равен `NULL`, возвращает объект [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes) `b'<NULL>'`.315316#### `int PyObject_IsSubclass(PyObject *derived, PyObject *cls)`317318*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*319320Возвращает `1`, если класс *derived* идентичен классу *cls* или является его подклассом, иначе возвращает `0`. В случае ошибки возвращает `-1`.321322Если *cls* является кортежем, проверка будет выполняться для каждого элемента в *cls*. Результатом будет `1`, если хотя бы одна из проверок вернёт `1`, иначе `0`.323324Если у *cls* есть метод [`__subclasscheck__()`](https://python-all.ru/3.16/reference/datamodel.html#type.__subclasscheck__), он будет вызван для определения статуса подкласса, как описано в [**PEP 3119**](https://python-all.ru/3.16/c-api/object.html). В противном случае *derived* является подклассом *cls*, если он является прямым или косвенным подклассом, т.е. содержится в [`cls.__mro__`](https://python-all.ru/3.16/reference/datamodel.html#type.__mro__).325326Обычно в качестве классов рассматриваются только объекты классов, т.е. экземпляры [`type`](https://python-all.ru/3.16/library/functions.html#type) или производного класса. Однако объекты могут переопределить это, имея атрибут [`__bases__`](https://python-all.ru/3.16/reference/datamodel.html#type.__bases__) (который должен быть кортежем базовых классов).327328#### `int PyObject_IsInstance(PyObject *inst, PyObject *cls)`329330*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*331332Возвращает `1`, если *inst* является экземпляром класса *cls* или подкласса *cls*, или `0`, если нет. При ошибке возвращает `-1` и устанавливает исключение.333334Если *cls* является кортежем, проверка будет выполняться для каждого элемента в *cls*. Результатом будет `1`, если хотя бы одна из проверок вернёт `1`, иначе `0`.335336Если у *cls* есть метод [`__instancecheck__()`](https://python-all.ru/3.16/reference/datamodel.html#type.__instancecheck__), он будет вызван для определения статуса подкласса, как описано в [**PEP 3119**](https://python-all.ru/3.16/c-api/object.html). В противном случае *inst* является экземпляром *cls*, если его класс является подклассом *cls*.337338Экземпляр *inst* может переопределить то, что считается его классом, с помощью атрибута [`__class__`](https://python-all.ru/3.16/reference/datamodel.html#object.__class__).339340Объект *cls* может переопределить, считается ли он классом и каковы его базовые классы, с помощью атрибута [`__bases__`](https://python-all.ru/3.16/reference/datamodel.html#type.__bases__) (который должен быть кортежем базовых классов).341342#### `Py_hash_t PyObject_Hash(PyObject *o)`343344*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*345346Вычисляет и возвращает хеш-значение объекта *o*. При неудаче возвращает `-1`. Это эквивалент выражения Python `hash(o)`.347348Изменено в версии 3.2: Тип возвращаемого значения теперь Py\_hash\_t. Это знаковое целое число того же размера, что и [`Py_ssize_t`](https://python-all.ru/3.16/c-api/intro.html#c.Py_ssize_t).349350#### `Py_hash_t PyObject_HashNotImplemented(PyObject *o)`351352*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*353354Set a [`TypeError`](https://python-all.ru/3.16/library/exceptions.html#TypeError) indicating that `type(o)` is not [hashable](https://python-all.ru/3.16/glossary.html#term-hashable) and return `-1`. This function receives special treatment when stored in a `tp_hash` slot, allowing a type to explicitly indicate to the interpreter that it is not hashable.355356#### `int PyObject_IsTrue(PyObject *o)`357358*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*359360Возвращает `1`, если объект *o* считается истинным, и `0` в противном случае. Эквивалентно выражению Python `not not o`. При неудаче возвращает `-1`.361362#### `int PyObject_Not(PyObject *o)`363364*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*365366Возвращает `0`, если объект *o* считается истинным, и `1` в противном случае. Эквивалентно выражению Python `not o`. При неудаче возвращает `-1`.367368#### `PyObject *PyObject_Type(PyObject *o)`369370*Возвращаемое значение: новая ссылка.*371372*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*373374When *o* is non-`NULL`, returns a type object corresponding to the object type of object *o*. On failure, raises [`SystemError`](https://python-all.ru/3.16/library/exceptions.html#SystemError) and returns `NULL`. This is equivalent to the Python expression `type(o)`. This function creates a new [strong reference](https://python-all.ru/3.16/glossary.html#term-strong-reference) to the return value. There’s really no reason to use this function instead of the [`Py_TYPE()`](https://python-all.ru/3.16/c-api/structures.html#c.Py_TYPE) function, which returns a pointer of type [PyTypeObject](https://python-all.ru/3.16/c-api/type.html#c.PyTypeObject)\*, except when a new strong reference is needed.375376#### `int PyObject_TypeCheck(PyObject *o, PyTypeObject *type)`377378Возвращает ненулевое значение, если объект *o* имеет тип *type* или является подтипом *type*, и `0` в противном случае. Оба параметра должны быть не равны `NULL`.379380#### `Py_ssize_t PyObject_Size(PyObject *o)`381382#### `Py_ssize_t PyObject_Length(PyObject *o)`383384*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*385386Возвращает длину объекта *o*. Если объект *o* предоставляет протоколы последовательности и отображения, возвращается длина последовательности. При ошибке возвращается `-1`. Эквивалентно выражению Python `len(o)`.387388#### `Py_ssize_t PyObject_LengthHint(PyObject *o, Py_ssize_t defaultvalue)`389390Возвращает оценочную длину объекта *o*. Сначала пытается вернуть его фактическую длину, затем оценку с помощью [`__length_hint__()`](https://python-all.ru/3.16/reference/datamodel.html#object.__length_hint__), и в итоге возвращает значение по умолчанию. При ошибке возвращает `-1`. Эквивалентно выражению Python `operator.length_hint(o, defaultvalue)`.391392Добавлено в версии 3.4.393394#### `PyObject *PyObject_GetItem(PyObject *o, PyObject *key)`395396*Возвращаемое значение: новая ссылка.*397398*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*399400Возвращает элемент *o*, соответствующий объекту *key*, или `NULL` при неудаче. Эквивалентно выражению Python `o[key]`.401402#### `int PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v)`403404*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*405406Сопоставляет объекту *key* значение *v*. Возбуждает исключение и возвращает `-1` при неудаче; возвращает `0` в случае успеха. Эквивалентно инструкции Python `o[key] = v`. Эта функция *не* крадёт ссылку на *v*.407408#### `int PyObject_DelItem(PyObject *o, PyObject *key)`409410*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*411412Удаляет сопоставление для объекта *key* из объекта *o*. Возвращает `-1` при неудаче. Эквивалентно инструкции Python `del o[key]`.413414#### `int PyObject_DelItemString(PyObject *o, const char *key)`415416*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*417418То же, что и [`PyObject_DelItem()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_DelItem), но *key* задаётся как const char\* строка байтов в кодировке UTF-8, а не как [PyObject](https://python-all.ru/3.16/c-api/structures.html#c.PyObject)\*.419420#### `PyObject *PyObject_Dir(PyObject *o)`421422*Возвращаемое значение: новая ссылка.*423424*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*425426Эквивалентно выражению Python `dir(o)`, возвращает (возможно пустой) список строк, подходящих для аргумента-объекта, или `NULL`, если произошла ошибка. Если аргумент равен `NULL`, это похоже на `dir()` в Python, возвращает имена текущих локальных переменных; в этом случае, если нет активного фрейма выполнения, возвращается `NULL`, но [`PyErr_Occurred()`](https://python-all.ru/3.16/c-api/exceptions.html#c.PyErr_Occurred) вернёт false.427428#### `PyObject *PyObject_GetIter(PyObject *o)`429430*Возвращаемое значение: новая ссылка.*431432*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*433434Эквивалентно выражению Python `iter(o)`. Возвращает новый итератор для аргумента-объекта, или сам объект, если объект уже является итератором. Возбуждает [`TypeError`](https://python-all.ru/3.16/library/exceptions.html#TypeError) и возвращает `NULL`, если объект не может быть итерирован.435436#### `PyObject *PyObject_SelfIter(PyObject *obj)`437438*Возвращаемое значение: новая ссылка.*439440*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable).*441442This is equivalent to the Python `__iter__(self): return self` method. It is intended for [iterator](https://python-all.ru/3.16/glossary.html#term-iterator) types, to be used in the [`PyTypeObject.tp_iter`](https://python-all.ru/3.16/c-api/typeobj.html#c.PyTypeObject.tp_iter) slot.443444#### `PyObject *PyObject_GetAIter(PyObject *o)`445446*Возвращаемое значение: новая ссылка.*447448*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable) начиная с версии 3.10.*449450Эквивалентно выражению Python `aiter(o)`. Принимает объект `AsyncIterable` и возвращает для него `AsyncIterator`. Обычно это новый итератор, но если аргумент является `AsyncIterator`, возвращает самого себя. Возбуждает [`TypeError`](https://python-all.ru/3.16/library/exceptions.html#TypeError) и возвращает `NULL`, если объект не может быть итерирован.451452Добавлено в версии 3.10.453454#### `void *PyObject_GetTypeData(PyObject *o, PyTypeObject *cls)`455456*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable) начиная с версии 3.12.*457458Получить указатель на данные, специфичные для подкласса, зарезервированные для *cls*.459460Объект *o* должен быть экземпляром *cls*, а *cls* должен быть создан с использованием отрицательного [`PyType_Spec.basicsize`](https://python-all.ru/3.16/c-api/type.html#c.PyType_Spec.basicsize). Python не проверяет это.461462При ошибке устанавливает исключение и возвращает `NULL`.463464Добавлено в версии 3.12.465466#### `Py_ssize_t PyType_GetTypeDataSize(PyTypeObject *cls)`467468*Часть [Stable ABI](https://python-all.ru/3.16/c-api/stable.html#stable) начиная с версии 3.12.*469470Возвращает размер памяти экземпляра, зарезервированной для *cls*, то есть размер памяти, возвращаемой [`PyObject_GetTypeData()`](https://python-all.ru/3.16/c-api/object.html#c.PyObject_GetTypeData).471472Это значение может быть больше запрошенного с помощью [`-PyType_Spec.basicsize`](https://python-all.ru/3.16/c-api/type.html#c.PyType_Spec.basicsize); допускается использовать этот больший размер (например, с `memset()`).473474Тип *cls* **должен** быть создан с использованием отрицательного [`PyType_Spec.basicsize`](https://python-all.ru/3.16/c-api/type.html#c.PyType_Spec.basicsize). Python не проверяет этого.475476В случае ошибки устанавливает исключение и возвращает отрицательное значение.477478Добавлено в версии 3.12.479480#### `void *PyObject_GetItemData(PyObject *o)`481482Возвращает указатель на данные для каждого элемента класса с [`Py_TPFLAGS_ITEMS_AT_END`](https://python-all.ru/3.16/c-api/typeobj.html#c.Py_TPFLAGS_ITEMS_AT_END).483484В случае ошибки устанавливает исключение и возвращает `NULL`. [`TypeError`](https://python-all.ru/3.16/library/exceptions.html#TypeError) возбуждается, если у *o* не установлен [`Py_TPFLAGS_ITEMS_AT_END`](https://python-all.ru/3.16/c-api/typeobj.html#c.Py_TPFLAGS_ITEMS_AT_END).485486Добавлено в версии 3.12.487488#### `int PyObject_VisitManagedDict(PyObject *obj, visitproc visit, void *arg)`489490Посещает управляемый словарь *obj*.491492Эту функцию можно вызывать только внутри функции обхода типа, у которого установлен флаг [`Py_TPFLAGS_MANAGED_DICT`](https://python-all.ru/3.16/c-api/typeobj.html#c.Py_TPFLAGS_MANAGED_DICT).493494Добавлено в версии 3.13.495496#### `void PyObject_ClearManagedDict(PyObject *obj)`497498Очищает управляемый словарь *obj*.499500Эту функцию можно вызывать только внутри функции очистки типа, у которого установлен флаг [`Py_TPFLAGS_MANAGED_DICT`](https://python-all.ru/3.16/c-api/typeobj.html#c.Py_TPFLAGS_MANAGED_DICT).501502Добавлено в версии 3.13.503504#### `int PyUnstable_Object_EnableDeferredRefcount(PyObject *obj)`505506> *Это [нестабильное API](https://python-all.ru/3.16/c-api/stable.html#unstable-c-api). Оно может меняться без предупреждения в минорных версиях.*507508Включает [отложенный подсчёт ссылок](https://python-all.ru/3.16/c-api/object.html) для *obj*, если это поддерживается средой выполнения. В сборке [со свободными потоками](https://python-all.ru/3.16/glossary.html#term-free-threading) это позволяет интерпретатору избегать корректировки счётчика ссылок для *obj*, что может повысить производительность в многопоточном режиме. Плата за это – то, что *obj* будет освобождаться только сборщиком мусора, отслеживающим циклические ссылки, а не в тот момент, когда у интерпретатора больше нет ссылок на него.509510Эта функция возвращает `1`, если для *obj* включён отложенный подсчёт ссылок, и `0`, если отложенный подсчёт ссылок не поддерживается или подсказка была проигнорирована интерпретатором, например, когда отложенный подсчёт ссылок уже включён для *obj*. Эта функция потокобезопасна и не может завершиться ошибкой.511512Эта функция ничего не делает в сборках с включённым [GIL](https://python-all.ru/3.16/glossary.html#term-GIL), которые не поддерживают отложенный подсчёт ссылок. Она также ничего не делает, если *obj* не является объектом, отслеживаемым сборщиком мусора (см. [`gc.is_tracked()`](https://python-all.ru/3.16/library/gc.html#gc.is_tracked) и [`PyObject_GC_IsTracked()`](https://python-all.ru/3.16/c-api/gcsupport.html#c.PyObject_GC_IsTracked)).513514Эту функцию предполагается использовать вскоре после создания *obj*, кодом, который его создаёт, например, в слот [`tp_new`](https://python-all.ru/3.16/c-api/typeobj.html#c.PyTypeObject.tp_new) объекта.515516Добавлено в версии 3.14.517518#### `int PyUnstable_Object_IsUniqueReferencedTemporary(PyObject *obj)`519520> *Это [нестабильное API](https://python-all.ru/3.16/c-api/stable.html#unstable-c-api). Оно может меняться без предупреждения в минорных версиях.*521522Проверяет, является ли *obj* уникальным временным объектом. Возвращает `1`, если *obj* известен как уникальный временный объект, и `0` в противном случае. Эта функция не может завершиться ошибкой, но проверка консервативна и может вернуть `0` в некоторых случаях, даже если *obj* является уникальным временным объектом.523524Если объект является уникальным временным, гарантируется, что текущий код содержит единственную ссылку на объект. Для аргументов C-функций следует использовать эту функцию вместо проверки того, равен ли счётчик ссылок `1`. Начиная с Python 3.14, интерпретатор внутренне избегает некоторых изменений счётчика ссылок при загрузке объектов на стек операндов путём [заимствования](https://python-all.ru/3.16/glossary.html#term-borrowed-reference) ссылок, когда это возможно, что означает, что счётчик ссылок, равный `1`, сам по себе не гарантирует, что аргумент функции уникально ссылается на объект.525526В примере ниже `my_func` вызывается с уникальным временным объектом в качестве аргумента:527528```c529my_func([1, 2, 3])530```531532В примере ниже `my_func` **не** вызывается с уникальным временным объектом в качестве аргумента, даже если его счётчик ссылок равен `1`:533534```c535my_list = [1, 2, 3]536my_func(my_list)537```538539См. также функцию [`Py_REFCNT()`](https://python-all.ru/3.16/c-api/refcounting.html#c.Py_REFCNT).540541Добавлено в версии 3.14.542543#### `int PyUnstable_IsImmortal(PyObject *obj)`544545> *Это [нестабильное API](https://python-all.ru/3.16/c-api/stable.html#unstable-c-api). Оно может меняться без предупреждения в минорных версиях.*546547Эта функция возвращает ненулевое значение, если *obj* является [бессмертным](https://python-all.ru/3.16/glossary.html#term-immortal), и ноль в противном случае. Эта функция не может завершиться ошибкой.548549> **Примечание**550>551> Объекты, являющиеся бессмертными в одной версии CPython, не гарантированно являются бессмертными в другой.552553Добавлено в версии 3.14.554555#### `int PyUnstable_TryIncRef(PyObject *obj)`556557> *Это [нестабильное API](https://python-all.ru/3.16/c-api/stable.html#unstable-c-api). Оно может меняться без предупреждения в минорных версиях.*558559Увеличивает счётчик ссылок *obj*, если он не равен нулю. Возвращает `1`, если счётчик ссылок объекта был успешно увеличен. В противном случае эта функция возвращает `0`.560561[`PyUnstable_EnableTryIncRef()`](https://python-all.ru/3.16/c-api/object.html#c.PyUnstable_EnableTryIncRef) должна была быть вызвана ранее для *obj*, иначе эта функция может ложно вернуть `0` в [сборке со свободными потоками](https://python-all.ru/3.16/glossary.html#term-free-threaded-build).562563Эта функция логически эквивалентна следующему коду на C, за исключением того, что она ведёт себя атомарно в [сборке со свободными потоками](https://python-all.ru/3.16/glossary.html#term-free-threaded-build):564565```c566if (Py_REFCNT(op) > 0) {567   Py_INCREF(op);568   return 1;569}570return 0;571```572573Предназначен как строительный блок для управления слабыми ссылками без накладных расходов [объекта слабой ссылки](https://python-all.ru/3.16/c-api/weakref.html#weakrefobjects) Python.574575Обычно правильное использование этой функции требует поддержки со стороны деаллокатора *obj* ([`tp_dealloc`](https://python-all.ru/3.16/c-api/typeobj.html#c.PyTypeObject.tp_dealloc)). Например, следующий набросок можно адаптировать для реализации «слабого словаря», работающего как [`WeakValueDictionary`](https://python-all.ru/3.16/library/weakref.html#weakref.WeakValueDictionary) для конкретного типа:576577```c578PyMutex mutex;579580PyObject *581add_entry(weakmap_key_type *key, PyObject *value)582{583    PyUnstable_EnableTryIncRef(value);584    weakmap_type weakmap = ...;585    PyMutex_Lock(&mutex);586    weakmap_add_entry(weakmap, key, value);587    PyMutex_Unlock(&mutex);588    Py_RETURN_NONE;589}590591PyObject *592get_value(weakmap_key_type *key)593{594    weakmap_type weakmap = ...;595    PyMutex_Lock(&mutex);596    PyObject *result = weakmap_find(weakmap, key);597    if (PyUnstable_TryIncRef(result)) {598        // `result` можно безопасно использовать599        PyMutex_Unlock(&mutex);600        return result;601    }602    // если мы попали сюда, `result` начинает собираться сборщиком мусора,603    // но ещё не удалён из weakmap604    PyMutex_Unlock(&mutex);605    return NULL;606}607608// Функция tp_dealloc для значений weakmap609void610value_dealloc(PyObject *value)611{612    weakmap_type weakmap = ...;613    PyMutex_Lock(&mutex);614    weakmap_remove_value(weakmap, value);615616    ...617    PyMutex_Unlock(&mutex);618}619```620621Добавлено в версии 3.14.622623#### `void PyUnstable_EnableTryIncRef(PyObject *obj)`624625> *Это [нестабильное API](https://python-all.ru/3.16/c-api/stable.html#unstable-c-api). Оно может меняться без предупреждения в минорных версиях.*626627Включает последующее использование [`PyUnstable_TryIncRef()`](https://python-all.ru/3.16/c-api/object.html#c.PyUnstable_TryIncRef) на *obj*. Вызывающий должен удерживать [сильную ссылку](https://python-all.ru/3.16/glossary.html#term-strong-reference) на *obj* при вызове этой функции.628629Добавлено в версии 3.14.630631#### `int PyUnstable_Object_IsUniquelyReferenced(PyObject *op)`632633> *Это [нестабильное API](https://python-all.ru/3.16/c-api/stable.html#unstable-c-api). Оно может меняться без предупреждения в минорных версиях.*634635Определяет, имеет ли *op* только одну ссылку.636637В сборках с GIL эта функция эквивалентна [Py\_REFCNT](https://python-all.ru/3.16/c-api/refcounting.html#c.Py_REFCNT)([op](https://python-all.ru/3.16/c-api/object.html#c.PyUnstable_Object_IsUniquelyReferenced)) == 1.638639В [сборке со свободной многопоточностью](https://python-all.ru/3.16/glossary.html#term-free-threaded-build) эта функция проверяет, равен ли *op* [счётчик ссылок](https://python-all.ru/3.16/glossary.html#term-reference-count) единице, и дополнительно проверяет, используется ли *op* только этим потоком. [Py\_REFCNT](https://python-all.ru/3.16/c-api/refcounting.html#c.Py_REFCNT)([op](https://python-all.ru/3.16/c-api/object.html#c.PyUnstable_Object_IsUniquelyReferenced)) == 1 **не** является потокобезопасным в сборках со свободной многопоточностью; предпочтительнее использовать эту функцию.640641Вызывающий должен удерживать [присоединённое состояние потока](https://python-all.ru/3.16/glossary.html#term-attached-thread-state), несмотря на то, что эта функция не вызывает интерпретатор Python. Эта функция не может завершиться ошибкой.642643Добавлено в версии 3.14.644645#### `int PyUnstable_SetImmortal(PyObject *op)`646647> *Это [нестабильное API](https://python-all.ru/3.16/c-api/stable.html#unstable-c-api). Оно может меняться без предупреждения в минорных версиях.*648649Помечает объект *op* как [бессмертный](https://python-all.ru/3.16/glossary.html#term-immortal). Вызывающий поток должен быть единственным, кто ссылается на аргумент. Эта функция предназначена для уменьшения конкуренции за счётчик ссылок в [сборке со свободной многопоточностью](https://python-all.ru/3.16/glossary.html#term-free-threaded-build) для объектов, совместно используемых потоками.650651Это однонаправленный процесс: объекты можно только сделать бессмертными; их нельзя снова сделать смертными. Бессмертные объекты не участвуют в подсчёте ссылок и никогда не будут собраны сборщиком мусора. Если объект отслеживается сборщиком мусора (GC), он перестаёт отслеживаться.652653Эту функцию следует использовать вскоре после создания *op*, кодом, который его создаёт, например, в слоте [`tp_new`](https://python-all.ru/3.16/c-api/typeobj.html#c.PyTypeObject.tp_new) объекта. Возвращает 1, если объект был сделан бессмертным, и 0 в противном случае. Эта функция не может завершиться ошибкой.654655Добавлено в версии 3.15.656