Spec-Zone.ru › Python 3.11

Протокол объекта

PyObject *Py_NotImplemented

Одиночный NotImplemented экземпляр, используемый для сигнализации об отсутствии реализации операции для заданной комбинации типов.

Py_RETURN_NOTIMPLEMENTED

Правильно обработайте возврат Py_NotImplemented внутри C-функции (то есть создайте новую сильную ссылку на NotImplemented и верните её).

int PyObject_Print(PyObject *o, FILE *fp, int flags)

Вывести объект o в файл fp. Возвращает -1 при ошибке. Аргумент flags используется для включения определённых параметров вывода. В настоящее время поддерживается только Py_PRINT_RAW; в этом случае вместо repr() выводится str() объекта.

int PyObject_HasAttr(PyObject *o, PyObject *attr_name)
Часть Стабильной ABI.

Возвращает 1 если у o есть атрибут attr_name, и 0 в противном случае. Это эквивалентно выражению Python hasattr(o, attr_name). Эта функция всегда выполняется успешно.

Примечание

Исключения, возникающие при вызове методов __getattr__() и __getattribute__(), игнорируются. Для правильной обработки ошибок используйте PyObject_GetAttr() вместо этого.

int PyObject_HasAttrString(PyObject *o, const char *attr_name)
Часть Стабильной ABI.

Это то же самое, что и PyObject_HasAttr(), но attr_name задаётся как строка UTF-8, закодированная в виде const char*, а не как PyObject*.

Примечание

Исключения, возникающие при вызове методов __getattr__() и __getattribute__() или при создании временного объекта str, игнорируются. Для правильной обработки ошибок используйте PyObject_GetAttrString() вместо этого.

PyObject *PyObject_GetAttr(PyObject *o, PyObject *attr_name)
Возвращаемое значение: новая ссылка. Часть Стабильной ABI.

Получить атрибут с именем attr_name от объекта o. Возвращает значение атрибута при успехе или NULL при ошибке. Эквивалентно выражению Python o.attr_name.

PyObject *PyObject_GetAttrString(PyObject *o, const char *attr_name)
Возвращаемое значение: новая ссылка. Часть Стабильной ABI.

Это то же самое, что и PyObject_GetAttr(), но attr_name задаётся как строка UTF-8, закодированная в виде const char*, а не как PyObject*.

PyObject *PyObject_GenericGetAttr(PyObject *o, PyObject *name)
Возвращаемое значение: новая ссылка. Часть Стабильной ABI.

Функция-получатель атрибута по умолчанию, предназначенная для размещения в слоте объекта типа. Она ищет дескриптор в словаре классов в MRO объекта, а также атрибут в __dict__ объекта (если он есть). Как описано в Реализация дескрипторов, дескрипторы данных имеют приоритет над атрибутами экземпляра, а дескрипторы не-данных нет. В противном случае генерируется AttributeError.

int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v)
Часть Стабильной ABI.

Установить значение атрибута с именем attr_name для объекта o на значение v. Сгенерировать исключение и вернуть -1 при ошибке; вернуть 0 при успехе. Эквивалентно оператору Python o.attr_name = v.

Если v равно NULL, атрибут удаляется. Это поведение устарело в пользу использования PyObject_DelAttr(), но на данный момент его удаление не планируется.

int PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v)
Часть Стабильной ABI.

Это то же самое, что и PyObject_SetAttr(), но attr_name задаётся как строка UTF-8, закодированная в виде const char*, а не как PyObject*.

Если v равно NULL, атрибут удаляется, но эта функция устарела в пользу использования PyObject_DelAttrString().

int PyObject_GenericSetAttr(PyObject *o, PyObject *name, PyObject *value)
Часть Стабильной ABI.

Функция-установщик/удалятор атрибута по умолчанию, предназначенная для размещения в слоте объекта типа tp_setattro. Она ищет дескриптор данных в словаре классов в MRO объекта и, если он найден, имеет приоритет перед установкой или удалением атрибута в словаре экземпляра. В противном случае атрибут устанавливается или удаляется в __dict__ объекта (если он есть). При успехе возвращается 0, в противном случае генерируется AttributeError и возвращается -1.

int PyObject_DelAttr(PyObject *o, PyObject *attr_name)

Удалить атрибут с именем attr_name для объекта o. Возвращает -1 при ошибке. Эквивалентно оператору Python del o.attr_name.

int PyObject_DelAttrString(PyObject *o, const char *attr_name)

Это то же самое, что и PyObject_DelAttr(), но attr_name задаётся как строка UTF-8, закодированная в виде const char*, а не как PyObject*.

PyObject *PyObject_GenericGetDict(PyObject *o, void *context)
Возвращаемое значение: новая ссылка. Часть Стабильной ABI с версии 3.10.

Реализация по умолчанию для получения дескриптора __dict__. Создаёт словарь при необходимости.

Эта функция также может использоваться для получения __dict__ объекта o. Передайте NULL в качестве context при вызове. Поскольку эта функция может потребовать выделения памяти для словаря, вызов PyObject_GetAttr() для доступа к атрибуту объекта может быть более эффективным.

При ошибке возвращает NULL с установленным исключением.

Введено в версии 3.3.

END_OF_DOCUMENT_MARKER
int PyObject_GenericSetDict(PyObject *o, PyObject *value, void *context)
Часть Стабильной ABI с версии 3.7.

Общее реализация метода установщика атрибута __dict__ дескриптора. Эта реализация не позволяет удалить словарь.

Введено в версии 3.3.

PyObject **_PyObject_GetDictPtr(PyObject *obj)

Возвращает указатель на __dict__ объекта obj. Если словарь отсутствует, возвращает NULL без генерации исключения.

Эта функция может потребовать выделения памяти для словаря, поэтому для доступа к атрибуту объекта может быть эффективнее вызвать PyObject_GetAttr().

PyObject *PyObject_RichCompare(PyObject *o1, PyObject *o2, int opid)
Значение результата: Новая ссылка. Часть Стабильной ABI.

Сравнивает значения o1 и o2 с помощью операции, заданной opid, которая должна быть одной из Py_LT, Py_LE, Py_EQ, Py_NE, Py_GT или Py_GE, соответствующих <, <=, ==, !=, >, или >= соответственно. Это эквивалентно выражению Python o1 op o2, где op - оператор, соответствующий opid. Возвращает значение сравнения при успехе или NULL при ошибке.

int PyObject_RichCompareBool(PyObject *o1, PyObject *o2, int opid)
Часть Стабильной ABI.

Сравнивает значения o1 и o2 с помощью операции, заданной opid, которая должна быть одной из Py_LT, Py_LE, Py_EQ, Py_NE, Py_GT или Py_GE, соответствующих <, <=, ==, !=, >, или >= соответственно. Возвращает -1 при ошибке, 0 если результат ложный, 1 в противном случае. Это эквивалентно выражению Python o1 op o2, где op - оператор, соответствующий opid.

Примечание

Если o1 и o2 — один и тот же объект, PyObject_RichCompareBool() всегда возвращает 1 для Py_EQ и 0 для Py_NE.

PyObject *PyObject_Format(PyObject *obj, PyObject *format_spec)
Часть Стабильной ABI.

Форматирует obj с помощью format_spec. Это эквивалентно выражению Python format(obj, format_spec).

format_spec может быть NULL. В этом случае вызов эквивалентен format(obj). Возвращает отформатированную строку при успехе, NULL при ошибке.

PyObject *PyObject_Repr(PyObject *o)
Значение результата: Новая ссылка. Часть Стабильной ABI.

Вычисляет строковое представление объекта o. Возвращает строковое представление при успехе, NULL при ошибке. Это эквивалентно выражению Python repr(o). Вызывается встроенной функцией repr().

Изменено в версии 3.4: Эта функция теперь включает утверждение отладки, чтобы гарантировать, что она не игнорирует активное исключение.

PyObject *PyObject_ASCII(PyObject *o)
Значение результата: Новая ссылка. Часть Стабильной ABI.

Как и PyObject_Repr(), вычисляет строковое представление объекта o, но эскэпирует не-ASCII символы в строке, возвращаемой PyObject_Repr(), с помощью \x, \u или \U эскэпов. Это генерирует строку, аналогичную той, что возвращается PyObject_Repr() в Python 2. Вызывается встроенной функцией ascii().

PyObject *PyObject_Str(PyObject *o)
Значение результата: Новая ссылка. Часть Стабильной ABI.

Вычисляет строковое представление объекта o. Возвращает строковое представление при успехе, NULL при ошибке. Это эквивалентно выражению Python str(o). Вызывается встроенной функцией str() и, следовательно, функцией print().

Изменено в версии 3.4: Эта функция теперь включает утверждение отладки, чтобы гарантировать, что она не игнорирует активное исключение.

PyObject *PyObject_Bytes(PyObject *o)
Значение результата: Новая ссылка. Часть Стабильной ABI.

Вычисляет байтовое представление объекта o. NULL возвращается при ошибке, а байтовый объект при успехе. Это эквивалентно выражению Python bytes(o), когда o не является целым числом. В отличие от bytes(o), при o являющимся целым числом возбуждается исключение TypeError, вместо нулевого байтового объекта.

int PyObject_IsSubclass(PyObject *derived, PyObject *cls)
Часть Стабильной ABI.

Возвращает 1 если класс derived идентичен или происходит от класса cls, в противном случае возвращает 0. В случае ошибки возвращает -1.

Если cls является кортежем, проверка будет выполнена для каждой записи в cls. Результат будет 1 когда по крайней мере одна из проверок возвращает 1, иначе это будет 0.

Если у cls есть метод __subclasscheck__(), он будет вызван для определения статуса подкласса, как описано в PEP 3119. В противном случае derived является подклассом cls, если это прямой или косвенный подкласс, т.е. содержится в cls.__mro__.

Обычно только объекты классов, т.е. экземпляры type или производного класса, считаются классами. Однако объекты могут переопределить это, имея атрибут __bases__ (который должен быть кортежем базовых классов).

int PyObject_IsInstance(PyObject *inst, PyObject *cls)
Часть Стабильной ABI.

Возвращает 1, если inst является экземпляром класса cls или подкласса cls, или 0, если нет. В случае ошибки возвращает -1 и устанавливает исключение.

Если cls является кортежем, проверка выполняется для каждого элемента в cls. Результат будет 1, когда хотя бы одна из проверок вернёт 1, в противном случае он будет 0.

Если у cls есть метод __instancecheck__(), он будет вызван для определения статуса подкласса, как описано в PEP 3119. В противном случае, inst является экземпляром cls, если его класс является подклассом cls.

Экземпляр inst может переопределить, что считается его классом, имея атрибут __class__.

Объект cls может переопределить, считается ли он классом, и каковы его базовые классы, имея атрибут __bases__ (который должен быть кортежем базовых классов).

Py_hash_t PyObject_Hash(PyObject *o)
Часть Стабильной ABI.

Вычислить и вернуть значение хэша объекта o. В случае ошибки вернуть -1. Это эквивалентно выражению Python hash(o).

Изменено в версии 3.2: Тип возвращаемого значения теперь Py_hash_t. Это целое число со знаком, размер которого такой же, как у Py_ssize_t.

Py_hash_t PyObject_HashNotImplemented(PyObject *o)
Часть Стабильной ABI.

Установить TypeError, указывающий, что type(o) не является хешируемым, и вернуть -1. Эта функция получает специальное обращение, когда хранится в слоте tp_hash позволяя типу явно указать интерпретатору, что он не хешируемый.

int PyObject_IsTrue(PyObject *o)
Часть Стабильной ABI.

Возвращает 1, если объект o считается истинным, и 0 в противном случае. Это эквивалентно выражению Python not not o. В случае ошибки вернуть -1.

int PyObject_Not(PyObject *o)
Часть Стабильной ABI.

Возвращает 0, если объект o считается истинным, и 1 в противном случае. Это эквивалентно выражению Python not o. В случае ошибки вернуть -1.

PyObject *PyObject_Type(PyObject *o)
Значение возврата: Новая ссылка. Часть Стабильной ABI.

Когда o не NULL, возвращает объект типа, соответствующий типу объекта o. В случае ошибки вызывает SystemError и возвращает NULL. Это эквивалентно выражению Python type(o). Эта функция создаёт новую сильную ссылку на возвращаемое значение. Нет реальных причин использовать эту функцию вместо функции Py_TYPE(), которая возвращает указатель типа PyTypeObject*, за исключением случаев, когда требуется новая сильная ссылка.

int PyObject_TypeCheck(PyObject *o, PyTypeObject *type)

Возвращает ненулевое значение, если объект o имеет тип type или подтип type, и 0 в противном случае. Оба параметра должны быть не-NULL.

Py_ssize_t PyObject_Size(PyObject *o)
Py_ssize_t PyObject_Length(PyObject *o)
Часть Стабильной ABI.

Возвращает длину объекта o. Если объект o предоставляет протоколы последовательностей и отображений, возвращается длина последовательности. В случае ошибки возвращается -1. Это эквивалентно выражению Python len(o).

Py_ssize_t PyObject_LengthHint(PyObject *o, Py_ssize_t defaultvalue)

Возвращает оценённую длину объекта o. Сначала попытается вернуть фактическую длину, затем оценку с использованием __length_hint__(), и, наконец, вернёт значение по умолчанию. В случае ошибки возвращает -1. Это эквивалентно выражению Python operator.length_hint(o, defaultvalue).

Добавлена в версии 3.4.

PyObject *PyObject_GetItem(PyObject *o, PyObject *key)
Значение возврата: Новая ссылка. Часть Стабильной ABI.

Возвращает элемент o, соответствующий объекту key, или NULL в случае ошибки. Это эквивалентно выражению Python o[key].

int PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v)
Часть Стабильной ABI.

Сопоставляет объект key со значением v. Вызывает исключение и возвращает -1 в случае ошибки; возвращает 0 при успехе. Это эквивалентно оператору Python o[key] = v. Эта функция *не* крадёт ссылку на v.

int PyObject_DelItem(PyObject *o, PyObject *key)
Часть Стабильной ABI.

Удаляет сопоставление для объекта key из объекта o. Возвращает -1 в случае ошибки. Это эквивалентно оператору Python del o[key].

PyObject *PyObject_Dir(PyObject *o)
Значение возврата: Новая ссылка. Часть Стабильной ABI.

Это эквивалентно выражению Python dir(o), возвращающему (возможно, пустой) список строк, соответствующих объекту-аргументу, или NULL в случае ошибки. Если аргумент NULL, это похоже на Python dir(), возвращая имена текущих локальных переменных; в этом случае, если нет активной рамки выполнения, то NULL возвращается, но PyErr_Occurred() вернёт false.

PyObject *PyObject_GetIter(PyObject *o)
Значение возврата: Новая ссылка. Часть Стабильной ABI.

Это эквивалентно выражению Python iter(o). Возвращает новый итератор для объекта-аргумента или сам объект, если объект уже является итератором. Вызывает TypeError и возвращает NULL если объект не может быть итерирован.

PyObject *PyObject_GetAIter(PyObject *o)
Значение возврата: Новая ссылка. Часть Стабильной ABI с версии 3.10.

Это эквивалентно выражению Python aiter(o). Принимает объект AsyncIterable и возвращает итератор AsyncIterator для него. Как правило, это новый итератор, но если аргумент является AsyncIterator, возвращается сам аргумент. Вызывает TypeError и возвращает NULL если объект не может быть итерирован.

Добавлена в версии 3.10.

© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/c-api/object.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API