Протокол объекта
-
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) -
Возвращает
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__(который должен быть кортежем базовых классов).
-
int PyCallable_Check(PyObject *o) -
Определяет, является ли объект o вызываемым. Возвращает
1если объект вызываемый и0в противном случае. Эта функция всегда выполняется успешно.
-
PyObject* PyObject_Call(PyObject *callable, PyObject *args, PyObject *kwargs) -
Значение возврата: Новый ссылка.
Вызывает вызываемый объект Python callable с аргументами, заданными кортежем args, и именованными аргументами, заданными словарем kwargs.
args не должен быть
NULL, используйте пустой кортеж, если аргументы не нужны. Если именованные аргументы не нужны, kwargs может бытьNULL.Возвращает результат вызова при успехе или поднимает исключение и возвращает
NULLпри ошибке.Это эквивалентно выражению Python:
callable(*args, **kwargs).
-
PyObject* PyObject_CallObject(PyObject *callable, PyObject *args) -
Значение возврата: Новый ссылка.
Вызывает вызываемый объект Python callable с аргументами, заданными кортежем args. Если аргументы не нужны, то args может быть
NULL.Возвращает результат вызова при успехе или поднимает исключение и возвращает
NULLпри ошибке.Это эквивалентно выражению Python:
callable(*args).
-
PyObject* PyObject_CallFunction(PyObject *callable, const char *format, ...) -
Значение возврата: Новый ссылка.
Вызывает вызываемый объект Python callable с переменным числом аргументов C. Аргументы C описываются с помощью строки формата в стиле
Py_BuildValue(). Формат может бытьNULL, указывая на отсутствие аргументов.Возвращает результат вызова при успехе или поднимает исключение и возвращает
NULLпри ошибке.Это эквивалентно выражению Python:
callable(*args).Обратите внимание, что если вы передаёте только аргументы
PyObject *,PyObject_CallFunctionObjArgs()— более быстрый вариант.Изменено в версии 3.4: Тип format был изменён с
char *.
-
PyObject* PyObject_CallMethod(PyObject *obj, const char *name, const char *format, ...) -
Значение возврата: Новый ссылка.
Вызывает метод с именем name объекта obj с переменным числом аргументов C. Аргументы C описываются строкой формата в стиле
Py_BuildValue(), которая должна создавать кортеж.Формат может быть
NULL, указывая на отсутствие аргументов.Возвращает результат вызова при успехе или поднимает исключение и возвращает
NULLпри ошибке.Это эквивалентно выражению Python:
obj.name(arg1, arg2, ...).Обратите внимание, что если вы передаёте только аргументы
PyObject *,PyObject_CallMethodObjArgs()— более быстрый вариант.Изменено в версии 3.4: Типы name и format были изменены с
char *.
-
PyObject* PyObject_CallFunctionObjArgs(PyObject *callable, ...) -
Значение возврата: Новый ссылка.
Вызывает вызываемый объект Python callable с переменным числом аргументов
PyObject*. Аргументы предоставляются как переменное число параметров, за которым следуетNULL.Возвращает результат вызова при успехе или поднимает исключение и возвращает
NULLпри ошибке.Это эквивалентно выражению Python:
callable(arg1, arg2, ...).
-
PyObject* PyObject_CallMethodObjArgs(PyObject *obj, PyObject *name, ...) -
Значение возврата: Новый ссылка.
Вызывает метод объекта Python obj, где имя метода задаётся как объект Python string в name. Вызывается с переменным числом аргументов
PyObject*. Аргументы предоставляются как переменное число параметров, за которым следуетNULL.Возвращает результат вызова при успехе или поднимает исключение и возвращает
NULLпри ошибке.
-
PyObject* _PyObject_Vectorcall(PyObject *callable, PyObject *const *args, size_t nargsf, PyObject *kwnames) -
Вызов вызываемого объекта Python callable, используя
vectorcall, если это возможно.args — массив C с позиционными аргументами.
nargsf — количество позиционных аргументов плюс, необязательно, флаг
PY_VECTORCALL_ARGUMENTS_OFFSET(см. ниже). Для получения фактического количества аргументов используйтеPyVectorcall_NARGS(nargsf).kwnames может быть либо
NULL(нет именованных аргументов), либо кортежем имён именованных аргументов. В последнем случае значения именованных аргументов хранятся в args после позиционных аргументов. Количество именованных аргументов не влияет на nargsf.kwnames должен содержать только объекты типа
str(а не подклассы), и все ключи должны быть уникальными.Возвращает результат вызова при успехе или вызывает исключение и возвращает
NULLпри неудаче.Использует протокол vectorcall, если вызываемый объект его поддерживает; в противном случае аргументы преобразуются для использования
tp_call.Примечание
Эта функция предварительная и ожидается, что она станет общедоступной в Python 3.9 с другим именем и, возможно, изменённой семантикой. Если вы используете функцию, планируйте обновление кода для Python 3.9.
Введено в версии 3.8.
-
PY_VECTORCALL_ARGUMENTS_OFFSET -
Если установлен в аргументе nargsf вызова vectorcall, вызываемый объект может временно изменить
args[-1]. Другими словами, args указывает на аргумент 1 (а не 0) в выделенном векторе. Вызываемый объект должен восстановить значениеargs[-1]перед возвратом.В тех случаях, когда это возможно сделать дёшево (без дополнительного выделения), вызывающие объекты должны использовать
PY_VECTORCALL_ARGUMENTS_OFFSET. Это позволит вызываемым объектам, таким как связанные методы, выполнять вызовы (с предварительно добавленным аргументом self) без затрат.Введено в версии 3.8.
-
Py_ssize_t PyVectorcall_NARGS(size_t nargsf) -
Принимая во внимание аргумент nargsf вызова vectorcall, возвращает фактическое количество аргументов. В настоящее время эквивалентно
nargsf & ~PY_VECTORCALL_ARGUMENTS_OFFSET.Введено в версии 3.8.
-
PyObject* _PyObject_FastCallDict(PyObject *callable, PyObject *const *args, size_t nargsf, PyObject *kwdict) -
То же, что и
_PyObject_Vectorcall(), за исключением того, что именованные аргументы передаются в качестве словаря в kwdict. Это может бытьNULLв случае отсутствия именованных аргументов.Для вызываемых объектов, поддерживающих
vectorcall, аргументы внутри преобразуются в соглашение vectorcall. Поэтому эта функция добавляет некоторую накладку по сравнению с_PyObject_Vectorcall(). Её следует использовать только в том случае, если вызывающий объект уже имеет готовый словарь.Примечание
Эта функция предварительная и ожидается, что она станет общедоступной в Python 3.9 с другим именем и, возможно, изменённой семантикой. Если вы используете функцию, планируйте обновление кода для Python 3.9.
Введено в версии 3.8.
-
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). Эта функция увеличивает счётчик ссылок возвращаемого значения. Нет реальных причин использовать эту функцию вместо обычного выраженияo->ob_type, которое возвращает указатель типаPyTypeObject*, кроме случаев, когда необходим увеличенный счётчик ссылок.
-
int PyObject_TypeCheck(PyObject *o, PyTypeObject *type) -
Возвращает истину, если объект 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 default) -
Возвращает приблизительную длину объекта o. Сначала пытается вернуть фактическую длину, затем приблизительную длину, используя
__length_hint__(), и, наконец, возвращает значение по умолчанию. В случае ошибки возвращает-1. Эквивалентно выражению Pythonoperator.length_hint(o, default).Введено в версии 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()вернёт ложь.
-
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.8/c-api/object.html