Протокол объекта¶
-
PyObject *
Py_NotImplemented¶ Синглтон
NotImplemented, используемый для сигнализации о том, что операция не реализована для данной комбинации типов.
-
Py_RETURN_NOTIMPLEMENTED¶ Правильно обрабатывать возврат
Py_NotImplementedиз функции языка Си (то есть увеличивать счетчик ссылок 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)¶ - Part of the Stable ABI.
Возвращает
1, если o имеет атрибут attr_name, и0в противном случае. Это эквивалентно выражению Pythonhasattr(o, attr_name). Эта функция всегда успешна.Обратите внимание, что исключения, возникающие при вызове методов
__getattr__()и__getattribute__(), будут подавлены. Для получения сообщений об ошибках используйтеPyObject_GetAttr()вместо этого.
-
int
PyObject_HasAttrString(PyObject *o, const char *attr_name)¶ - Part of the Stable ABI.
Возвращает
1, если o имеет атрибут attr_name, и0в противном случае. Это эквивалентно выражению Pythonhasattr(o, attr_name). Эта функция всегда успешна.Обратите внимание, что исключения, возникающие при вызове методов
__getattr__()и__getattribute__()и создании временного строкового объекта, будут подавлены. Для получения сообщений об ошибках используйтеPyObject_GetAttrString()вместо этого.
-
PyObject *
PyObject_GetAttr(PyObject *o, PyObject *attr_name)¶ - Return value: New reference. Part of the Stable ABI.
Извлечь атрибут с именем attr_name из объекта o. Возвращает значение атрибута в случае успеха или
NULLв случае неудачи. Это эквивалентно выражению Pythono.attr_name.
-
PyObject *
PyObject_GetAttrString(PyObject *o, const char *attr_name)¶ - Return value: New reference. Part of the Stable ABI.
Извлечь атрибут с именем attr_name из объекта o. Возвращает значение атрибута в случае успеха или
NULLв случае неудачи. Это эквивалентно выражению Pythono.attr_name.
-
PyObject *
PyObject_GenericGetAttr(PyObject *o, PyObject *name)¶ - Return value: New reference. Part of the Stable ABI.
Общая функция получения атрибутов, предназначенная для размещения в слоте
tp_getattroобъекта типа. Она ищет дескриптор в словаре классов в MRO объекта, а также атрибут в__dict__объекта (если он есть). Как указано в Реализация дескрипторов, дескрипторы данных имеют преимущество перед атрибутами экземпляра, а дескрипторы не данных - нет. В противном случае возникает ошибкаAttributeError.
-
int
PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v)¶ - Part of the Stable 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)¶ - Part of the Stable ABI.
Установить значение атрибута с именем attr_name для объекта o в значение v. Вызвать исключение и вернуть
-1при неудаче; вернуть0при успехе. Это эквивалент оператора Pythono.attr_name = v.Если v равно
NULL, атрибут удаляется, но эта функция устарела в пользу использованияPyObject_DelAttrString().
-
int
PyObject_GenericSetAttr(PyObject *o, PyObject *name, PyObject *value)¶ - Part of the Stable 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)¶ - Return value: New reference. Part of the Stable ABI since version 3.10.
Общая реализация для геттера дескриптора
__dict__. При необходимости создает словарь.Добавлено в версии 3.3.
-
int
PyObject_GenericSetDict(PyObject *o, PyObject *value, void *context)¶ - Part of the Stable ABI since version 3.7.
Общая реализация для сеттера дескриптора
__dict__. Эта реализация не позволяет удалять словарь.Добавлено в версии 3.3.
-
PyObject *
PyObject_RichCompare(PyObject *o1, PyObject *o2, int opid)¶ - Return value: New reference. Part of the Stable 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)¶ - Part of the Stable 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_Repr(PyObject *o)¶ - Return value: New reference. Part of the Stable ABI.
Вычислить строковое представление объекта o. При успехе возвращает строковое представление, при неудаче -
NULL. Это эквивалент выражения Pythonrepr(o). Вызывается встроенной функциейrepr().Изменено в версии 3.4: Эта функция теперь включает отладочное утверждение, чтобы гарантировать, что она не отбрасывает активное исключение.
-
PyObject *
PyObject_ASCII(PyObject *o)¶ - Return value: New reference. Part of the Stable ABI.
Как и
PyObject_Repr(), вычислите строковое представление объекта o, но экранируйте символы, не относящиеся к ASCII, в строке, возвращаемойPyObject_Repr()с помощью\x,\uили\U. Это генерирует строку, подобную той, которую возвращаетPyObject_Repr()в Python 2. Вызывается встроенной функциейascii().
-
PyObject *
PyObject_Str(PyObject *o)¶ - Return value: New reference. Part of the Stable ABI.
Вычислить строковое представление объекта o. При успехе возвращает строковое представление, при неудаче -
NULL. Это эквивалент выражения Pythonstr(o). Вызывается встроенной функциейstr()и, следовательно, функциейprint().Изменено в версии 3.4: Эта функция теперь включает отладочное утверждение, чтобы гарантировать, что она не отбрасывает активное исключение.
-
PyObject *
PyObject_Bytes(PyObject *o)¶ - Return value: New reference. Part of the Stable ABI.
Вычислить байтовое представление объекта o. В случае неудачи возвращается
NULL, а в случае успеха - байтовый объект. Это эквивалентно выражению Pythonbytes(o), когда o не является целым числом. В отличие отbytes(o), когда o является целым числом, а не нуль-инициализированным объектом bytes, выдается ошибка типа TypeError.
-
int
PyObject_IsSubclass(PyObject *derived, PyObject *cls)¶ - Part of the Stable 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)¶ - Part of the Stable 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)¶ - Part of the Stable ABI.
Вычислить и вернуть хэш-значение объекта o. В случае неудачи возвращается
-1. Это эквивалентно выражению Pythonhash(o).Изменено в версии 3.2: Типом возврата теперь является Py_hash_t. Это знаковое целое число того же размера, что и
Py_ssize_t.
-
Py_hash_t
PyObject_HashNotImplemented(PyObject *o)¶ - Part of the Stable ABI.
Установите
TypeError, указывающий на то, чтоtype(o)не является хэшируемым, и верните-1. Эта функция получает особое обращение, когда хранится в слотеtp_hash, что позволяет типу явно указать интерпретатору, что он не является хэшируемым.
-
int
PyObject_IsTrue(PyObject *o)¶ - Part of the Stable ABI.
Возвращает
1, если объект o считается истинным, и0в противном случае. Это эквивалентно выражению Pythonnot not o. В случае неудачи возвращается-1.
-
int
PyObject_Not(PyObject *o)¶ - Part of the Stable ABI.
Возвращает
0, если объект o считается истинным, и1в противном случае. Это эквивалентно выражению Pythonnot o. В случае неудачи возвращается-1.
-
PyObject *
PyObject_Type(PyObject *o)¶ - Return value: New reference. Part of the Stable 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)¶ - Part of the Stable 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)¶ - Return value: New reference. Part of the Stable ABI.
Возвращает элемент o, соответствующий объекту key или
NULLпри неудаче. Это эквивалент выражения Pythono[key].
-
int
PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v)¶ - Part of the Stable ABI.
Сопоставить объект key со значением v. При неудаче вызывает исключение и возвращает
-1; при успехе возвращает0. Это эквивалент оператора Pythono[key] = v. Эта функция не крадет ссылку на v.
-
int
PyObject_DelItem(PyObject *o, PyObject *key)¶ - Part of the Stable ABI.
Удалить отображение для объекта key из объекта o. При неудаче возвращается
-1. Это эквивалентно оператору Pythondel o[key].
-
PyObject *
PyObject_Dir(PyObject *o)¶ - Return value: New reference. Part of the Stable ABI.
Это эквивалентно выражению Python
dir(o), возвращающему (возможно, пустой) список строк, соответствующих аргументу объекта, илиNULL, если произошла ошибка. Если аргументом являетсяNULL, это эквивалентно выражению Pythondir(), возвращающему имена текущих локалей; в этом случае, если ни один кадр выполнения не активен, возвращаетсяNULL, ноPyErr_Occurred()возвращает false.
-
PyObject *
PyObject_GetIter(PyObject *o)¶ - Return value: New reference. Part of the Stable ABI.
Это эквивалентно выражению Python
iter(o). Оно возвращает новый итератор для аргумента объекта или сам объект, если объект уже является итератором. ВызываетTypeErrorи возвращаетNULL, если объект не может быть итератором.
-
PyObject *
PyObject_GetAIter(PyObject *o)¶ - Return value: New reference. Part of the Stable ABI since version 3.10.
Это эквивалент выражения
aiter(o)в Python. Принимает объектAsyncIterableи возвращает для негоAsyncIterator. Обычно это новый итератор, но если аргументом являетсяAsyncIterator, то возвращается он сам. ВызываетTypeErrorи возвращаетNULL, если объект не может быть итерирован.Добавлено в версии 3.10.