Протокол объекта
-
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.
Возвращает
1если у объекта o есть атрибут attr_name, и0в противном случае. Это эквивалентно выражению Pythonhasattr(o, attr_name). Эта функция всегда выполняется успешно.Обратите внимание, что исключения, возникающие при вызове методов
__getattr__()и__getattribute__()и создании временного строкового объекта, будут подавлены. Для получения отчёта об ошибках используйте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.
Получение атрибута с именем attr_name из объекта o. Возвращает значение атрибута при успехе или
NULLпри неудаче. Это эквивалентно выражению Pythono.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при успехе. Это эквивалентно оператору Pythono.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при успехе. Это эквивалентно оператору Pythono.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при неудаче. Это эквивалентно оператору Pythondel o.attr_name.
-
int PyObject_DelAttrString(PyObject *o, const char *attr_name) -
Удаление атрибута с именем attr_name объекта o. Возвращает
-1при неудаче. Это эквивалентно оператору Pythondel 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, соответствующих<,<=,==,!=,>, или>=соответственно. Это эквивалентно выражению 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) -
Часть Стабильного API.
Форматирование obj с использованием format_spec. Это эквивалентно выражению Python
format(obj, format_spec).format_spec может быть
NULL. В этом случае вызов эквивалентенformat(obj). Возвращает отформатированную строку при успехе,NULLпри ошибке.
-
PyObject *PyObject_Repr(PyObject *o) -
Возвращаемое значение: Новая ссылка. Часть Стабильного API.
Вычисление стрового представления объекта o. Возвращает стровое представление при успехе,
NULLпри ошибке. Это эквивалентно выражению Pythonrepr(o). Вызывается встроенной функцией Pythonrepr().Изменено в версии 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при ошибке. Это эквивалентно выражению Pythonstr(o). Вызывается встроенной функциейstr()и, следовательно, функциейprint().Изменено в версии 3.4: Эта функция теперь включает отладочную проверку, чтобы гарантировать, что она не игнорирует активное исключение.
-
PyObject *PyObject_Bytes(PyObject *o) -
Возвращаемое значение: Новая ссылка. Часть Стабильного API.
Вычислить байтовое представление объекта o.
NULLвозвращается при ошибке, и байтовый объект при успехе. Это эквивалентно выражению Pythonbytes(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. Это эквивалентно выражению Pythonhash(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в противном случае. Это эквивалентно выражению Pythonnot not o. При ошибке вернуть-1.
-
int PyObject_Not(PyObject *o) -
Часть Стабильного API.
Возвращает
0, если объект o считается истинным, и1в противном случае. Это эквивалентно выражению Pythonnot o. При ошибке вернуть-1.
-
PyObject *PyObject_Type(PyObject *o) -
Возвращаемое значение: Новая ссылка. Часть Стабильного API.
Если 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) -
Часть Стабильного API.
Возвращает длину объекта 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.10/c-api/object.html