• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1.. highlightlang:: c
2
3.. _object:
4
5Object Protocol
6===============
7
8
9.. c:var:: PyObject* Py_NotImplemented
10
11   The ``NotImplemented`` singleton, used to signal that an operation is
12   not implemented for the given type combination.
13
14
15.. c:macro:: Py_RETURN_NOTIMPLEMENTED
16
17   Properly handle returning :c:data:`Py_NotImplemented` from within a C
18   function (that is, increment the reference count of NotImplemented and
19   return it).
20
21
22.. c:function:: int PyObject_Print(PyObject *o, FILE *fp, int flags)
23
24   Print an object *o*, on file *fp*.  Returns ``-1`` on error.  The flags argument
25   is used to enable certain printing options.  The only option currently supported
26   is :const:`Py_PRINT_RAW`; if given, the :func:`str` of the object is written
27   instead of the :func:`repr`.
28
29
30.. c:function:: int PyObject_HasAttr(PyObject *o, PyObject *attr_name)
31
32   Returns ``1`` if *o* has the attribute *attr_name*, and ``0`` otherwise.  This
33   is equivalent to the Python expression ``hasattr(o, attr_name)``.  This function
34   always succeeds.
35
36
37.. c:function:: int PyObject_HasAttrString(PyObject *o, const char *attr_name)
38
39   Returns ``1`` if *o* has the attribute *attr_name*, and ``0`` otherwise.  This
40   is equivalent to the Python expression ``hasattr(o, attr_name)``.  This function
41   always succeeds.
42
43
44.. c:function:: PyObject* PyObject_GetAttr(PyObject *o, PyObject *attr_name)
45
46   Retrieve an attribute named *attr_name* from object *o*. Returns the attribute
47   value on success, or *NULL* on failure.  This is the equivalent of the Python
48   expression ``o.attr_name``.
49
50
51.. c:function:: PyObject* PyObject_GetAttrString(PyObject *o, const char *attr_name)
52
53   Retrieve an attribute named *attr_name* from object *o*. Returns the attribute
54   value on success, or *NULL* on failure. This is the equivalent of the Python
55   expression ``o.attr_name``.
56
57
58.. c:function:: PyObject* PyObject_GenericGetAttr(PyObject *o, PyObject *name)
59
60   Generic attribute getter function that is meant to be put into a type
61   object's ``tp_getattro`` slot.  It looks for a descriptor in the dictionary
62   of classes in the object's MRO as well as an attribute in the object's
63   :attr:`~object.__dict__` (if present).  As outlined in :ref:`descriptors`,
64   data descriptors take preference over instance attributes, while non-data
65   descriptors don't.  Otherwise, an :exc:`AttributeError` is raised.
66
67
68.. c:function:: int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v)
69
70   Set the value of the attribute named *attr_name*, for object *o*, to the value
71   *v*. Raise an exception and return ``-1`` on failure;
72   return ``0`` on success.  This is the equivalent of the Python statement
73   ``o.attr_name = v``.
74
75   If *v* is *NULL*, the attribute is deleted, however this feature is
76   deprecated in favour of using :c:func:`PyObject_DelAttr`.
77
78
79.. c:function:: int PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v)
80
81   Set the value of the attribute named *attr_name*, for object *o*, to the value
82   *v*. Raise an exception and return ``-1`` on failure;
83   return ``0`` on success.  This is the equivalent of the Python statement
84   ``o.attr_name = v``.
85
86   If *v* is *NULL*, the attribute is deleted, however this feature is
87   deprecated in favour of using :c:func:`PyObject_DelAttrString`.
88
89
90.. c:function:: int PyObject_GenericSetAttr(PyObject *o, PyObject *name, PyObject *value)
91
92   Generic attribute setter and deleter function that is meant
93   to be put into a type object's :c:member:`~PyTypeObject.tp_setattro`
94   slot.  It looks for a data descriptor in the
95   dictionary of classes in the object's MRO, and if found it takes preference
96   over setting or deleting the attribute in the instance dictionary. Otherwise, the
97   attribute is set or deleted in the object's :attr:`~object.__dict__` (if present).
98   On success, ``0`` is returned, otherwise an :exc:`AttributeError`
99   is raised and ``-1`` is returned.
100
101
102.. c:function:: int PyObject_DelAttr(PyObject *o, PyObject *attr_name)
103
104   Delete attribute named *attr_name*, for object *o*. Returns ``-1`` on failure.
105   This is the equivalent of the Python statement ``del o.attr_name``.
106
107
108.. c:function:: int PyObject_DelAttrString(PyObject *o, const char *attr_name)
109
110   Delete attribute named *attr_name*, for object *o*. Returns ``-1`` on failure.
111   This is the equivalent of the Python statement ``del o.attr_name``.
112
113
114.. c:function:: PyObject* PyObject_GenericGetDict(PyObject *o, void *context)
115
116   A generic implementation for the getter of a ``__dict__`` descriptor. It
117   creates the dictionary if necessary.
118
119   .. versionadded:: 3.3
120
121
122.. c:function:: int PyObject_GenericSetDict(PyObject *o, void *context)
123
124   A generic implementation for the setter of a ``__dict__`` descriptor. This
125   implementation does not allow the dictionary to be deleted.
126
127   .. versionadded:: 3.3
128
129
130.. c:function:: PyObject* PyObject_RichCompare(PyObject *o1, PyObject *o2, int opid)
131
132   Compare the values of *o1* and *o2* using the operation specified by *opid*,
133   which must be one of :const:`Py_LT`, :const:`Py_LE`, :const:`Py_EQ`,
134   :const:`Py_NE`, :const:`Py_GT`, or :const:`Py_GE`, corresponding to ``<``,
135   ``<=``, ``==``, ``!=``, ``>``, or ``>=`` respectively. This is the equivalent of
136   the Python expression ``o1 op o2``, where ``op`` is the operator corresponding
137   to *opid*. Returns the value of the comparison on success, or *NULL* on failure.
138
139
140.. c:function:: int PyObject_RichCompareBool(PyObject *o1, PyObject *o2, int opid)
141
142   Compare the values of *o1* and *o2* using the operation specified by *opid*,
143   which must be one of :const:`Py_LT`, :const:`Py_LE`, :const:`Py_EQ`,
144   :const:`Py_NE`, :const:`Py_GT`, or :const:`Py_GE`, corresponding to ``<``,
145   ``<=``, ``==``, ``!=``, ``>``, or ``>=`` respectively. Returns ``-1`` on error,
146   ``0`` if the result is false, ``1`` otherwise. This is the equivalent of the
147   Python expression ``o1 op o2``, where ``op`` is the operator corresponding to
148   *opid*.
149
150.. note::
151   If *o1* and *o2* are the same object, :c:func:`PyObject_RichCompareBool`
152   will always return ``1`` for :const:`Py_EQ` and ``0`` for :const:`Py_NE`.
153
154.. c:function:: PyObject* PyObject_Repr(PyObject *o)
155
156   .. index:: builtin: repr
157
158   Compute a string representation of object *o*.  Returns the string
159   representation on success, *NULL* on failure.  This is the equivalent of the
160   Python expression ``repr(o)``.  Called by the :func:`repr` built-in function.
161
162   .. versionchanged:: 3.4
163      This function now includes a debug assertion to help ensure that it
164      does not silently discard an active exception.
165
166.. c:function:: PyObject* PyObject_ASCII(PyObject *o)
167
168   .. index:: builtin: ascii
169
170   As :c:func:`PyObject_Repr`, compute a string representation of object *o*, but
171   escape the non-ASCII characters in the string returned by
172   :c:func:`PyObject_Repr` with ``\x``, ``\u`` or ``\U`` escapes.  This generates
173   a string similar to that returned by :c:func:`PyObject_Repr` in Python 2.
174   Called by the :func:`ascii` built-in function.
175
176   .. index:: string; PyObject_Str (C function)
177
178
179.. c:function:: PyObject* PyObject_Str(PyObject *o)
180
181   Compute a string representation of object *o*.  Returns the string
182   representation on success, *NULL* on failure.  This is the equivalent of the
183   Python expression ``str(o)``.  Called by the :func:`str` built-in function
184   and, therefore, by the :func:`print` function.
185
186   .. versionchanged:: 3.4
187      This function now includes a debug assertion to help ensure that it
188      does not silently discard an active exception.
189
190.. c:function:: PyObject* PyObject_Bytes(PyObject *o)
191
192   .. index:: builtin: bytes
193
194   Compute a bytes representation of object *o*.  *NULL* is returned on
195   failure and a bytes object on success.  This is equivalent to the Python
196   expression ``bytes(o)``, when *o* is not an integer.  Unlike ``bytes(o)``,
197   a TypeError is raised when *o* is an integer instead of a zero-initialized
198   bytes object.
199
200
201.. c:function:: int PyObject_IsSubclass(PyObject *derived, PyObject *cls)
202
203   Return ``1`` if the class *derived* is identical to or derived from the class
204   *cls*, otherwise return ``0``.  In case of an error, return ``-1``.
205
206   If *cls* is a tuple, the check will be done against every entry in *cls*.
207   The result will be ``1`` when at least one of the checks returns ``1``,
208   otherwise it will be ``0``.
209
210   If *cls* has a :meth:`~class.__subclasscheck__` method, it will be called to
211   determine the subclass status as described in :pep:`3119`.  Otherwise,
212   *derived* is a subclass of *cls* if it is a direct or indirect subclass,
213   i.e. contained in ``cls.__mro__``.
214
215   Normally only class objects, i.e. instances of :class:`type` or a derived
216   class, are considered classes.  However, objects can override this by having
217   a :attr:`__bases__` attribute (which must be a tuple of base classes).
218
219
220.. c:function:: int PyObject_IsInstance(PyObject *inst, PyObject *cls)
221
222   Return ``1`` if *inst* is an instance of the class *cls* or a subclass of
223   *cls*, or ``0`` if not.  On error, returns ``-1`` and sets an exception.
224
225   If *cls* is a tuple, the check will be done against every entry in *cls*.
226   The result will be ``1`` when at least one of the checks returns ``1``,
227   otherwise it will be ``0``.
228
229   If *cls* has a :meth:`~class.__instancecheck__` method, it will be called to
230   determine the subclass status as described in :pep:`3119`.  Otherwise, *inst*
231   is an instance of *cls* if its class is a subclass of *cls*.
232
233   An instance *inst* can override what is considered its class by having a
234   :attr:`__class__` attribute.
235
236   An object *cls* can override if it is considered a class, and what its base
237   classes are, by having a :attr:`__bases__` attribute (which must be a tuple
238   of base classes).
239
240
241.. c:function:: int PyCallable_Check(PyObject *o)
242
243   Determine if the object *o* is callable.  Return ``1`` if the object is callable
244   and ``0`` otherwise.  This function always succeeds.
245
246
247.. c:function:: PyObject* PyObject_Call(PyObject *callable_object, PyObject *args, PyObject *kw)
248
249   Call a callable Python object *callable_object*, with arguments given by the
250   tuple *args*, and named arguments given by the dictionary *kw*. If no named
251   arguments are needed, *kw* may be *NULL*. *args* must not be *NULL*, use an
252   empty tuple if no arguments are needed. Returns the result of the call on
253   success, or *NULL* on failure.  This is the equivalent of the Python expression
254   ``callable_object(*args, **kw)``.
255
256
257.. c:function:: PyObject* PyObject_CallObject(PyObject *callable_object, PyObject *args)
258
259   Call a callable Python object *callable_object*, with arguments given by the
260   tuple *args*.  If no arguments are needed, then *args* may be *NULL*.  Returns
261   the result of the call on success, or *NULL* on failure.  This is the equivalent
262   of the Python expression ``callable_object(*args)``.
263
264
265.. c:function:: PyObject* PyObject_CallFunction(PyObject *callable, const char *format, ...)
266
267   Call a callable Python object *callable*, with a variable number of C arguments.
268   The C arguments are described using a :c:func:`Py_BuildValue` style format
269   string.  The format may be *NULL*, indicating that no arguments are provided.
270   Returns the result of the call on success, or *NULL* on failure.  This is the
271   equivalent of the Python expression ``callable(*args)``. Note that if you only
272   pass :c:type:`PyObject \*` args, :c:func:`PyObject_CallFunctionObjArgs` is a
273   faster alternative.
274
275   .. versionchanged:: 3.4
276      The type of *format* was changed from ``char *``.
277
278
279.. c:function:: PyObject* PyObject_CallMethod(PyObject *o, const char *method, const char *format, ...)
280
281   Call the method named *method* of object *o* with a variable number of C
282   arguments.  The C arguments are described by a :c:func:`Py_BuildValue` format
283   string that should  produce a tuple.  The format may be *NULL*, indicating that
284   no arguments are provided. Returns the result of the call on success, or *NULL*
285   on failure.  This is the equivalent of the Python expression ``o.method(args)``.
286   Note that if you only pass :c:type:`PyObject \*` args,
287   :c:func:`PyObject_CallMethodObjArgs` is a faster alternative.
288
289   .. versionchanged:: 3.4
290      The types of *method* and *format* were changed from ``char *``.
291
292
293.. c:function:: PyObject* PyObject_CallFunctionObjArgs(PyObject *callable, ..., NULL)
294
295   Call a callable Python object *callable*, with a variable number of
296   :c:type:`PyObject\*` arguments.  The arguments are provided as a variable number
297   of parameters followed by *NULL*. Returns the result of the call on success, or
298   *NULL* on failure.
299
300
301.. c:function:: PyObject* PyObject_CallMethodObjArgs(PyObject *o, PyObject *name, ..., NULL)
302
303   Calls a method of the object *o*, where the name of the method is given as a
304   Python string object in *name*.  It is called with a variable number of
305   :c:type:`PyObject\*` arguments.  The arguments are provided as a variable number
306   of parameters followed by *NULL*. Returns the result of the call on success, or
307   *NULL* on failure.
308
309
310.. c:function:: Py_hash_t PyObject_Hash(PyObject *o)
311
312   .. index:: builtin: hash
313
314   Compute and return the hash value of an object *o*.  On failure, return ``-1``.
315   This is the equivalent of the Python expression ``hash(o)``.
316
317   .. versionchanged:: 3.2
318      The return type is now Py_hash_t.  This is a signed integer the same size
319      as Py_ssize_t.
320
321
322.. c:function:: Py_hash_t PyObject_HashNotImplemented(PyObject *o)
323
324   Set a :exc:`TypeError` indicating that ``type(o)`` is not hashable and return ``-1``.
325   This function receives special treatment when stored in a ``tp_hash`` slot,
326   allowing a type to explicitly indicate to the interpreter that it is not
327   hashable.
328
329
330.. c:function:: int PyObject_IsTrue(PyObject *o)
331
332   Returns ``1`` if the object *o* is considered to be true, and ``0`` otherwise.
333   This is equivalent to the Python expression ``not not o``.  On failure, return
334   ``-1``.
335
336
337.. c:function:: int PyObject_Not(PyObject *o)
338
339   Returns ``0`` if the object *o* is considered to be true, and ``1`` otherwise.
340   This is equivalent to the Python expression ``not o``.  On failure, return
341   ``-1``.
342
343
344.. c:function:: PyObject* PyObject_Type(PyObject *o)
345
346   .. index:: builtin: type
347
348   When *o* is non-*NULL*, returns a type object corresponding to the object type
349   of object *o*. On failure, raises :exc:`SystemError` and returns *NULL*.  This
350   is equivalent to the Python expression ``type(o)``. This function increments the
351   reference count of the return value. There's really no reason to use this
352   function instead of the common expression ``o->ob_type``, which returns a
353   pointer of type :c:type:`PyTypeObject\*`, except when the incremented reference
354   count is needed.
355
356
357.. c:function:: int PyObject_TypeCheck(PyObject *o, PyTypeObject *type)
358
359   Return true if the object *o* is of type *type* or a subtype of *type*.  Both
360   parameters must be non-*NULL*.
361
362
363.. c:function:: Py_ssize_t PyObject_Length(PyObject *o)
364               Py_ssize_t PyObject_Size(PyObject *o)
365
366   .. index:: builtin: len
367
368   Return the length of object *o*.  If the object *o* provides either the sequence
369   and mapping protocols, the sequence length is returned.  On error, ``-1`` is
370   returned.  This is the equivalent to the Python expression ``len(o)``.
371
372
373.. c:function:: Py_ssize_t PyObject_LengthHint(PyObject *o, Py_ssize_t default)
374
375   Return an estimated length for the object *o*. First try to return its
376   actual length, then an estimate using :meth:`~object.__length_hint__`, and
377   finally return the default value. On error return ``-1``. This is the
378   equivalent to the Python expression ``operator.length_hint(o, default)``.
379
380   .. versionadded:: 3.4
381
382
383.. c:function:: PyObject* PyObject_GetItem(PyObject *o, PyObject *key)
384
385   Return element of *o* corresponding to the object *key* or *NULL* on failure.
386   This is the equivalent of the Python expression ``o[key]``.
387
388
389.. c:function:: int PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v)
390
391   Map the object *key* to the value *v*.  Raise an exception and
392   return ``-1`` on failure; return ``0`` on success.  This is the
393   equivalent of the Python statement ``o[key] = v``.
394
395
396.. c:function:: int PyObject_DelItem(PyObject *o, PyObject *key)
397
398   Delete the mapping for *key* from *o*.  Returns ``-1`` on failure. This is the
399   equivalent of the Python statement ``del o[key]``.
400
401
402.. c:function:: PyObject* PyObject_Dir(PyObject *o)
403
404   This is equivalent to the Python expression ``dir(o)``, returning a (possibly
405   empty) list of strings appropriate for the object argument, or *NULL* if there
406   was an error.  If the argument is *NULL*, this is like the Python ``dir()``,
407   returning the names of the current locals; in this case, if no execution frame
408   is active then *NULL* is returned but :c:func:`PyErr_Occurred` will return false.
409
410
411.. c:function:: PyObject* PyObject_GetIter(PyObject *o)
412
413   This is equivalent to the Python expression ``iter(o)``. It returns a new
414   iterator for the object argument, or the object  itself if the object is already
415   an iterator.  Raises :exc:`TypeError` and returns *NULL* if the object cannot be
416   iterated.
417