Протокол объекта
-
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в противном случае. Это эквивалентно выражению Pythonhasattr(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при ошибке. Эквивалентно выражению Pythono.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при успехе. Эквивалентно оператору Pythono.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при ошибке. Эквивалентно оператору Pythondel 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.
-
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, соответствующих<,<=,==,!=,>, или>=соответственно. Это эквивалентно выражению Pythono1 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в противном случае. Это эквивалентно выражению Pythono1 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при ошибке. Это эквивалентно выражению Pythonrepr(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при ошибке. Это эквивалентно выражению Pythonstr(o). Вызывается встроенной функциейstr()и, следовательно, функциейprint().Изменено в версии 3.4: Эта функция теперь включает утверждение отладки, чтобы гарантировать, что она не игнорирует активное исключение.
-
PyObject *PyObject_Bytes(PyObject *o) -
Значение результата: Новая ссылка. Часть Стабильной ABI.
Вычисляет байтовое представление объекта o.
NULLвозвращается при ошибке, а байтовый объект при успехе. Это эквивалентно выражению Pythonbytes(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. Это эквивалентно выражению Pythonhash(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в противном случае. Это эквивалентно выражению Pythonnot not o. В случае ошибки вернуть-1.
-
int PyObject_Not(PyObject *o) -
Часть Стабильной ABI.
Возвращает
0, если объект o считается истинным, и1в противном случае. Это эквивалентно выражению Pythonnot o. В случае ошибки вернуть-1.
-
PyObject *PyObject_Type(PyObject *o) -
Значение возврата: Новая ссылка. Часть Стабильной ABI.
Когда o не
NULL, возвращает объект типа, соответствующий типу объекта o. В случае ошибки вызываетSystemErrorи возвращаетNULL. Это эквивалентно выражению Pythontype(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. Это эквивалентно выражению Pythonlen(o).
-
Py_ssize_t PyObject_LengthHint(PyObject *o, Py_ssize_t defaultvalue) -
Возвращает оценённую длину объекта o. Сначала попытается вернуть фактическую длину, затем оценку с использованием
__length_hint__(), и, наконец, вернёт значение по умолчанию. В случае ошибки возвращает-1. Это эквивалентно выражению Pythonoperator.length_hint(o, defaultvalue).Добавлена в версии 3.4.
-
PyObject *PyObject_GetItem(PyObject *o, PyObject *key) -
Значение возврата: Новая ссылка. Часть Стабильной ABI.
Возвращает элемент o, соответствующий объекту key, или
NULLв случае ошибки. Это эквивалентно выражению Pythono[key].
-
int PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v) -
Часть Стабильной ABI.
Сопоставляет объект key со значением v. Вызывает исключение и возвращает
-1в случае ошибки; возвращает0при успехе. Это эквивалентно оператору Pythono[key] = v. Эта функция *не* крадёт ссылку на v.
-
int PyObject_DelItem(PyObject *o, PyObject *key) -
Часть Стабильной ABI.
Удаляет сопоставление для объекта key из объекта o. Возвращает
-1в случае ошибки. Это эквивалентно оператору Pythondel o[key].
-
PyObject *PyObject_Dir(PyObject *o) -
Значение возврата: Новая ссылка. Часть Стабильной ABI.
Это эквивалентно выражению Python
dir(o), возвращающему (возможно, пустой) список строк, соответствующих объекту-аргументу, илиNULLв случае ошибки. Если аргументNULL, это похоже на Pythondir(), возвращая имена текущих локальных переменных; в этом случае, если нет активной рамки выполнения, то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