Протокол объекта
-
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; при её указании записываетсяstr()объекта вместоrepr().
-
int PyObject_HasAttr(PyObject *o, PyObject *attr_name) -
Возвращает
1если у o есть атрибут attr_name, и0в противном случае. Это эквивалентно выражению Pythonhasattr(o, attr_name). Эта функция всегда выполняется успешно.Обратите внимание, что исключения, возникающие при вызове методов
__getattr__()и__getattribute__(), будут подавлены. Для получения отчёта об ошибке используйтеPyObject_GetAttr().
-
int PyObject_HasAttrString(PyObject *o, const char *attr_name) -
Возвращает
1если у o есть атрибут attr_name, и0в противном случае. Это эквивалентно выражению Pythonhasattr(o, attr_name). Эта функция всегда выполняется успешно.Обратите внимание, что исключения, возникающие при вызове методов
__getattr__()и__getattribute__()и создании временного строкового объекта, будут подавлены. Для получения отчёта об ошибке используйтеPyObject_GetAttrString().
-
PyObject* PyObject_GetAttr(PyObject *o, PyObject *attr_name) -
Значение возврата: Новая ссылка.
Получение атрибута с именем attr_name из объекта o. Возвращает значение атрибута при успехе, или
NULLпри неудаче. Это эквивалентно выражению Pythono.attr_name.
-
PyObject* PyObject_GetAttrString(PyObject *o, const char *attr_name) -
Значение возврата: Новая ссылка.
Получение атрибута с именем attr_name из объекта o. Возвращает значение атрибута при успехе, или
NULLпри неудаче. Это эквивалентно выражению Pythono.attr_name.
-
PyObject* PyObject_GenericGetAttr(PyObject *o, PyObject *name) -
Значение возврата: Новая ссылка.
Функция-получатель атрибута по умолчанию, которая должна быть помещена в слот
tp_getattroобъекта типа. Она ищет дескриптор в словаре классов в списке методов разрешения (MRO) объекта, а также атрибут в__dict__объекта (если он есть). Как указано в Реализация дескрипторов, дескрипторы данных имеют приоритет перед атрибутами экземпляра, а дескрипторы не данных нет. В противном случае генерируетсяAttributeError.
-
int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v) -
Установите значение атрибута с именем 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) -
Установите значение атрибута с именем attr_name для объекта o на значение v. При неудаче генерируется исключение и возвращается
-1; возвращает0при успехе. Это эквивалентно оператору Pythono.attr_name = v.Если v равно
NULL, атрибут удаляется, но эта функция устарела в пользу использованияPyObject_DelAttrString().
-
int PyObject_GenericSetAttr(PyObject *o, PyObject *name, PyObject *value) -
Функция-установщик и удалитель атрибутов по умолчанию, которая должна быть помещена в слот
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) -
Значение возврата: Новая ссылка.
Реализация-по умолчанию для получения
__dict__дескриптора. Создаёт словарь при необходимости.Новая функция в версии 3.3.
-
int PyObject_GenericSetDict(PyObject *o, PyObject *value, void *context) -
Реализация-по умолчанию для установки
__dict__дескриптора. Эта реализация не позволяет удалять словарь.Новая функция в версии 3.3.
-
PyObject* PyObject_RichCompare(PyObject *o1, PyObject *o2, int opid) -
Значение возврата: Новая ссылка.
Сравнение значений 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) -
Сравнение значений 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_Repr(PyObject *o) -
Значение возврата: Новая ссылка.
Вычислить строковое представление объекта o. Возвращает строковое представление при успехе,
NULLпри неудаче. Это эквивалентно выражению Pythonrepr(o). Вызывается встроенной функциейrepr().Изменено в версии 3.4: Теперь функция включает в себя проверочный утверждающий оператор для того, чтобы убедиться, что она не игнорирует активное исключение.
-
PyObject* PyObject_ASCII(PyObject *o) -
Значение возврата: Новая ссылка.
Как и
PyObject_Repr(), вычисляет строковое представление объекта o, но экранирует не-ASCII-символы в строке, возвращаемойPyObject_Repr(), с помощью\x,\uили\Uэкранирования. Это генерирует строку, аналогичную той, что возвращаетPyObject_Repr()в Python 2. Вызывается встроенной функциейascii().
-
PyObject* PyObject_Str(PyObject *o) -
Значение возврата: Новая ссылка.
Вычисляет строковое представление объекта o. Возвращает строку при успехе,
NULLпри ошибке. Это эквивалентно выражению Pythonstr(o). Вызывается встроенной функциейstr()и, следовательно, функциейprint().Изменено в версии 3.4: Эта функция теперь включает утверждение отладки, чтобы гарантировать, что она не игнорирует активное исключение.
-
PyObject* PyObject_Bytes(PyObject *o) -
Значение возврата: Новая ссылка.
Вычисляет байтовое представление объекта o.
NULLвозвращается при ошибке, а объект типа bytes — при успехе. Это эквивалентно выражению Pythonbytes(o), когда o не является целым числом. В отличие отbytes(o), исключение TypeError возникает, когда o является целым числом вместо объекта bytes с нулевым значением.
-
int PyObject_IsSubclass(PyObject *derived, PyObject *cls) -
Возвращает
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) -
Возвращает
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) -
Вычисляет и возвращает значение хэша объекта o. В случае ошибки возвращает
-1. Это эквивалентно выражению Pythonhash(o).Изменено в версии 3.2: Тип возвращаемого значения теперь Py_hash_t. Это целое число со знаком, размер которого такой же, как у
Py_ssize_t.
-
Py_hash_t PyObject_HashNotImplemented(PyObject *o) -
Устанавливает
TypeError, указывая, чтоtype(o)не является хешируемым, и возвращает-1. Эта функция получает специальное обращение при хранении в слотеtp_hash, позволяя типу явно указать интерпретатору, что он не хешируем.
-
int PyObject_IsTrue(PyObject *o) -
Возвращает
1если объект o считается истинным, и0в противном случае. Это эквивалентно выражению Pythonnot not o. В случае ошибки возвращает-1.
-
int PyObject_Not(PyObject *o) -
Возвращает
0если объект o считается истинным, и1в противном случае. Это эквивалентно выражению Pythonnot o. В случае ошибки возвращает-1.
-
PyObject* PyObject_Type(PyObject *o) -
Значение возврата: Новая ссылка.
Когда o не
NULL, возвращает объект типа, соответствующий типу объекта o. При ошибке генерируетSystemErrorи возвращаетNULL. Это эквивалентно выражению Pythontype(o). Эта функция увеличивает счётчик ссылок возвращаемого значения. Нет реальной причины использовать эту функцию вместо функцииPy_TYPE(), которая возвращает указатель типаPyTypeObject*, кроме случаев, когда необходим увеличенный счётчик ссылок.
-
int PyObject_TypeCheck(PyObject *o, PyTypeObject *type) -
Возвращает true, если объект o имеет тип type или подтип type. Оба параметра должны быть не-
NULL.
-
Py_ssize_t PyObject_Size(PyObject *o) -
Py_ssize_t PyObject_Length(PyObject *o) -
Возвращает длину объекта 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) -
Значение возврата: Новая ссылка.
Возвращает элемент o, соответствующий объекту key, или
NULLпри ошибке. Это эквивалентно выражению Pythono[key].
-
int PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v) -
Сопоставляет объект key со значением v. Возбуждает исключение и возвращает
-1при ошибке; возвращает0при успехе. Это эквивалентно оператору Pythono[key] = v. Эта функция не заимствует ссылку на v.
-
int PyObject_DelItem(PyObject *o, PyObject *key) -
Удаляет сопоставление для объекта key из объекта o. Возвращает
-1при ошибке. Это эквивалентно оператору Pythondel o[key].
-
PyObject* PyObject_Dir(PyObject *o) -
Значение возврата: Новая ссылка.
Это эквивалентно выражению Python
dir(o), возвращающему (возможно, пустой) список строк, подходящий для аргумента объекта, илиNULLпри возникновении ошибки. Если аргумент являетсяNULL, это похоже на Pythondir(), возвращающее имена текущих локальных переменных; в этом случае, если активная рамка выполнения отсутствует, возвращаетсяNULL, ноPyErr_Occurred()вернёт false.
-
PyObject* PyObject_GetIter(PyObject *o) -
Значение возврата: Новая ссылка.
Это эквивалентно выражению Python
iter(o). Возвращает новый итератор для аргумента объекта или сам объект, если объект уже является итератором. ГенерируетTypeErrorи возвращаетNULLесли объект не может быть итерирован.
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/c-api/object.html