Spec-Zone.ru › Python 3.10

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

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.

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

Обратите внимание, что исключения, возникающие при вызове методов __getattr__() и __getattribute__() и создании временного строкового объекта, будут подавлены. Для получения отчёта об ошибках используйте 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.

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

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

Общий метод получения атрибута, предназначенный для размещения в слоте tp_getattro объекта типа. Он ищет дескриптор в словаре классов в порядке разрешения 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.

Устанавливает значение атрибута с именем attr_name объекта o на значение v. Вызывает исключение и возвращает -1 при неудаче; возвращает 0 при успехе. Это эквивалентно оператору Python o.attr_name = v.

Если 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)

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

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

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

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

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

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

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

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.

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

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

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

PyObject *PyObject_Repr(PyObject *o)
Возвращаемое значение: Новая ссылка. Часть Стабильного API.

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

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

PyObject *PyObject_ASCII(PyObject *o)
Возвращаемое значение: Новая ссылка. Часть Стабильного API.

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

PyObject *PyObject_Str(PyObject *o)
Возвращаемое значение: Новая ссылка. Часть Стабильного API.

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

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

PyObject *PyObject_Bytes(PyObject *o)
Возвращаемое значение: Новая ссылка. Часть Стабильного API.

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

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

Возвращает 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)
Часть Стабильного API.

Возвращает 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)
Часть Стабильного API.

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

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

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

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

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

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

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

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

PyObject *PyObject_Type(PyObject *o)
Возвращаемое значение: Новая ссылка. Часть Стабильного API.

Если 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)
Часть Стабильного API.

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

END_OF_DOCUMENT_MARKER
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.10/c-api/object.html

Spec-Zone.ru

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