Об’єктний протокол¶
-
PyObject*
Py_NotImplemented
¶ Синглтон
NotImplemented
, який використовується для сигналу про те, що операція не реалізована для даної комбінації типів.
-
Py_RETURN_NOTIMPLEMENTED
¶ Properly handle returning
Py_NotImplemented
from within a C function (that is, increment the reference count of NotImplemented and return it).
-
int
PyObject_Print
(PyObject *o, FILE *fp, int flags)¶ Print an object o, on file fp. Returns
-1
on error. The flags argument is used to enable certain printing options. The only option currently supported isPy_PRINT_RAW
; if given, thestr()
of the object is written instead of therepr()
.
-
int
PyObject_HasAttr
(PyObject *o, PyObject *attr_name)¶ Returns
1
if o has the attribute attr_name, and0
otherwise. This is equivalent to the Python expressionhasattr(o, attr_name)
. This function always succeeds.Note that exceptions which occur while calling
__getattr__()
and__getattribute__()
methods will get suppressed. To get error reporting usePyObject_GetAttr()
instead.
-
int
PyObject_HasAttrString
(PyObject *o, const char *attr_name)¶ Returns
1
if o has the attribute attr_name, and0
otherwise. This is equivalent to the Python expressionhasattr(o, attr_name)
. This function always succeeds.Note that exceptions which occur while calling
__getattr__()
and__getattribute__()
methods and creating a temporary string object will get suppressed. To get error reporting usePyObject_GetAttrString()
instead.
-
PyObject*
PyObject_GetAttr
(PyObject *o, PyObject *attr_name)¶ - Return value: New reference.
Отримати атрибут з назвою attr_name з об’єкта o. Повертає значення атрибута в разі успіху або
NULL
у разі невдачі. Це еквівалент виразу Pythono.attr_name
.
-
PyObject*
PyObject_GetAttrString
(PyObject *o, const char *attr_name)¶ - Return value: New reference.
Retrieve an attribute named attr_name from object o. Returns the attribute value on success, or
NULL
on failure. This is the equivalent of the Python expressiono.attr_name
.
-
PyObject*
PyObject_GenericGetAttr
(PyObject *o, PyObject *name)¶ - Return value: New reference.
Загальна функція отримання атрибутів, яка призначена для розміщення в слоті
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)¶ - Return value: New reference.
Загальна реалізація засобу отримання дескриптора
__dict__
. Він створює словник, якщо це необхідно.Нове в версії 3.3.
-
int
PyObject_GenericSetDict
(PyObject *o, PyObject *value, void *context)¶ Загальна реалізація засобу налаштування дескриптора
__dict__
. Ця реалізація не дозволяє видаляти словник.Нове в версії 3.3.
-
PyObject*
PyObject_RichCompare
(PyObject *o1, PyObject *o2, int opid)¶ - Return value: New reference.
Compare the values of o1 and o2 using the operation specified by opid, which must be one of
Py_LT
,Py_LE
,Py_EQ
,Py_NE
,Py_GT
, orPy_GE
, corresponding to<
,<=
,==
,!=
,>
, or>=
respectively. This is the equivalent of the Python expressiono1 op o2
, whereop
is the operator corresponding to opid. Returns the value of the comparison on success, orNULL
on failure.
-
int
PyObject_RichCompareBool
(PyObject *o1, PyObject *o2, int opid)¶ Compare the values of o1 and o2 using the operation specified by opid, which must be one of
Py_LT
,Py_LE
,Py_EQ
,Py_NE
,Py_GT
, orPy_GE
, corresponding to<
,<=
,==
,!=
,>
, or>=
respectively. Returns-1
on error,0
if the result is false,1
otherwise. This is the equivalent of the Python expressiono1 op o2
, whereop
is the operator corresponding to opid.
Примітка
If o1 and o2 are the same object, PyObject_RichCompareBool()
will always return 1
for Py_EQ
and 0
for Py_NE
.
-
PyObject*
PyObject_Repr
(PyObject *o)¶ - Return value: New reference.
Обчислити рядкове представлення об’єкта o. Повертає рядкове представлення в разі успіху,
NULL
у разі невдачі. Це еквівалент виразу Pythonrepr(o)
. Викликається вбудованою функцієюrepr()
.Змінено в версії 3.4: Ця функція тепер включає твердження налагодження, щоб гарантувати, що вона не відкидає мовчки активний виняток.
-
PyObject*
PyObject_ASCII
(PyObject *o)¶ - Return value: New reference.
Як
PyObject_Repr()
, обчислити рядкове представлення об’єкта o, але екранувати символи, відмінні від ASCII, у рядку, який повертаєPyObject_Repr()
, за допомогою\x
,\u
або\U
екранується. Це створює рядок, подібний до того, який повертаєPyObject_Repr()
у Python 2. Викликається вбудованою функцієюascii()
.
-
PyObject*
PyObject_Str
(PyObject *o)¶ - Return value: New reference.
Обчислити рядкове представлення об’єкта o. Повертає рядкове представлення в разі успіху,
NULL
у разі невдачі. Це еквівалент виразу Pythonstr(o)
. Викликається вбудованою функцієюstr()
і, отже, функцієюprint()
.Змінено в версії 3.4: Ця функція тепер включає твердження налагодження, щоб гарантувати, що вона не відкидає мовчки активний виняток.
-
PyObject*
PyObject_Bytes
(PyObject *o)¶ - Return value: New reference.
Обчисліть байтове представлення об’єкта 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__
.Normally only class objects, i.e. instances of
type
or a derived class, are considered classes. However, objects can override this by having a__bases__
attribute (which must be a tuple of base classes).
-
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.An instance inst can override what is considered its class by having a
__class__
attribute.An object cls can override if it is considered a class, and what its base classes are, by having a
__bases__
attribute (which must be a tuple of base classes).
-
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)¶ Set a
TypeError
indicating thattype(o)
is not hashable and return-1
. This function receives special treatment when stored in atp_hash
slot, allowing a type to explicitly indicate to the interpreter that it is not hashable.
-
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)¶ - Return value: New reference.
When o is non-
NULL
, returns a type object corresponding to the object type of object o. On failure, raisesSystemError
and returnsNULL
. This is equivalent to the Python expressiontype(o)
. This function increments the reference count of the return value. There’s really no reason to use this function instead of thePy_TYPE()
function, which returns a pointer of typePyTypeObject*
, except when the incremented reference count is needed.
-
int
PyObject_TypeCheck
(PyObject *o, PyTypeObject *type)¶ Return true if the object o is of type type or a subtype of type. Both parameters must be non-
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)¶ - Return value: New reference.
Повертає елемент 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)¶ - Return value: New reference.
Це еквівалентно виразу Python
dir(o)
, який повертає (можливо, порожній) список рядків, відповідних для аргументу об’єкта, абоNULL
, якщо була помилка. Якщо аргументNULL
, це схоже наdir()
Python, що повертає імена поточних локальних систем; у цьому випадку, якщо жоден кадр виконання не активний, повертаєтьсяNULL
, алеPyErr_Occurred()
повертатиме false.