blob: 43768f3959ee784968b03330f385761ec7326bab [file] [log] [blame]
Georg Brandl54a3faa2008-01-20 09:30:57 +00001.. highlightlang:: c
2
3.. _object:
4
5Object Protocol
6===============
7
8
Brian Curtin49281072011-08-11 09:41:31 -05009.. 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
Georg Brandl60203b42010-10-06 10:11:56 +000022.. c:function:: int PyObject_Print(PyObject *o, FILE *fp, int flags)
Georg Brandl54a3faa2008-01-20 09:30:57 +000023
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
Georg Brandl60203b42010-10-06 10:11:56 +000030.. c:function:: int PyObject_HasAttr(PyObject *o, PyObject *attr_name)
Georg Brandl54a3faa2008-01-20 09:30:57 +000031
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
Georg Brandl60203b42010-10-06 10:11:56 +000037.. c:function:: int PyObject_HasAttrString(PyObject *o, const char *attr_name)
Georg Brandl54a3faa2008-01-20 09:30:57 +000038
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
Georg Brandl60203b42010-10-06 10:11:56 +000044.. c:function:: PyObject* PyObject_GetAttr(PyObject *o, PyObject *attr_name)
Georg Brandl54a3faa2008-01-20 09:30:57 +000045
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
Georg Brandl60203b42010-10-06 10:11:56 +000051.. c:function:: PyObject* PyObject_GetAttrString(PyObject *o, const char *attr_name)
Georg Brandl54a3faa2008-01-20 09:30:57 +000052
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
Georg Brandl60203b42010-10-06 10:11:56 +000058.. c:function:: PyObject* PyObject_GenericGetAttr(PyObject *o, PyObject *name)
Benjamin Petersond23f8222009-04-05 19:13:16 +000059
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:`__dict__` (if present). As outlined in :ref:`descriptors`, data
64 descriptors take preference over instance attributes, while non-data
65 descriptors don't. Otherwise, an :exc:`AttributeError` is raised.
66
67
Georg Brandl60203b42010-10-06 10:11:56 +000068.. c:function:: int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v)
Georg Brandl54a3faa2008-01-20 09:30:57 +000069
70 Set the value of the attribute named *attr_name*, for object *o*, to the value
71 *v*. Returns ``-1`` on failure. This is the equivalent of the Python statement
72 ``o.attr_name = v``.
73
74
Georg Brandl60203b42010-10-06 10:11:56 +000075.. c:function:: int PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v)
Georg Brandl54a3faa2008-01-20 09:30:57 +000076
77 Set the value of the attribute named *attr_name*, for object *o*, to the value
78 *v*. Returns ``-1`` on failure. This is the equivalent of the Python statement
79 ``o.attr_name = v``.
80
81
Georg Brandl60203b42010-10-06 10:11:56 +000082.. c:function:: int PyObject_GenericSetAttr(PyObject *o, PyObject *name, PyObject *value)
Benjamin Petersond23f8222009-04-05 19:13:16 +000083
84 Generic attribute setter function that is meant to be put into a type
85 object's ``tp_setattro`` slot. It looks for a data descriptor in the
86 dictionary of classes in the object's MRO, and if found it takes preference
87 over setting the attribute in the instance dictionary. Otherwise, the
88 attribute is set in the object's :attr:`__dict__` (if present). Otherwise,
89 an :exc:`AttributeError` is raised and ``-1`` is returned.
90
91
Georg Brandl60203b42010-10-06 10:11:56 +000092.. c:function:: int PyObject_DelAttr(PyObject *o, PyObject *attr_name)
Georg Brandl54a3faa2008-01-20 09:30:57 +000093
94 Delete attribute named *attr_name*, for object *o*. Returns ``-1`` on failure.
95 This is the equivalent of the Python statement ``del o.attr_name``.
96
97
Georg Brandl60203b42010-10-06 10:11:56 +000098.. c:function:: int PyObject_DelAttrString(PyObject *o, const char *attr_name)
Georg Brandl54a3faa2008-01-20 09:30:57 +000099
100 Delete attribute named *attr_name*, for object *o*. Returns ``-1`` on failure.
101 This is the equivalent of the Python statement ``del o.attr_name``.
102
103
Benjamin Peterson8eb12692012-02-19 19:59:10 -0500104.. c:function:: PyObject* PyType_GenericGetDict(PyObject *o, void *context)
105
106 A generic implementation for the getter of a ``__dict__`` descriptor. It
107 creates the dictionary if necessary.
108
109
110.. c:function:: int PyType_GenericSetDict(PyObject *o, void *context)
111
112 A generic implementation for the setter of a ``__dict__`` descriptor. This
113 implementation does not allow the dictionary to be deleted.
114
115
Georg Brandl60203b42010-10-06 10:11:56 +0000116.. c:function:: PyObject* PyObject_RichCompare(PyObject *o1, PyObject *o2, int opid)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000117
118 Compare the values of *o1* and *o2* using the operation specified by *opid*,
119 which must be one of :const:`Py_LT`, :const:`Py_LE`, :const:`Py_EQ`,
120 :const:`Py_NE`, :const:`Py_GT`, or :const:`Py_GE`, corresponding to ``<``,
121 ``<=``, ``==``, ``!=``, ``>``, or ``>=`` respectively. This is the equivalent of
122 the Python expression ``o1 op o2``, where ``op`` is the operator corresponding
123 to *opid*. Returns the value of the comparison on success, or *NULL* on failure.
124
125
Georg Brandl60203b42010-10-06 10:11:56 +0000126.. c:function:: int PyObject_RichCompareBool(PyObject *o1, PyObject *o2, int opid)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000127
128 Compare the values of *o1* and *o2* using the operation specified by *opid*,
129 which must be one of :const:`Py_LT`, :const:`Py_LE`, :const:`Py_EQ`,
130 :const:`Py_NE`, :const:`Py_GT`, or :const:`Py_GE`, corresponding to ``<``,
131 ``<=``, ``==``, ``!=``, ``>``, or ``>=`` respectively. Returns ``-1`` on error,
132 ``0`` if the result is false, ``1`` otherwise. This is the equivalent of the
133 Python expression ``o1 op o2``, where ``op`` is the operator corresponding to
134 *opid*.
135
Eli Benderskyad30c422011-01-15 10:23:34 +0000136.. note::
137 If *o1* and *o2* are the same object, :c:func:`PyObject_RichCompareBool`
138 will always return ``1`` for :const:`Py_EQ` and ``0`` for :const:`Py_NE`.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000139
Georg Brandl60203b42010-10-06 10:11:56 +0000140.. c:function:: PyObject* PyObject_Repr(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000141
142 .. index:: builtin: repr
143
144 Compute a string representation of object *o*. Returns the string
145 representation on success, *NULL* on failure. This is the equivalent of the
Georg Brandl559e5d72008-06-11 18:37:52 +0000146 Python expression ``repr(o)``. Called by the :func:`repr` built-in function.
147
148
Georg Brandl60203b42010-10-06 10:11:56 +0000149.. c:function:: PyObject* PyObject_ASCII(PyObject *o)
Georg Brandl559e5d72008-06-11 18:37:52 +0000150
151 .. index:: builtin: ascii
152
Georg Brandl60203b42010-10-06 10:11:56 +0000153 As :c:func:`PyObject_Repr`, compute a string representation of object *o*, but
Georg Brandl559e5d72008-06-11 18:37:52 +0000154 escape the non-ASCII characters in the string returned by
Georg Brandl60203b42010-10-06 10:11:56 +0000155 :c:func:`PyObject_Repr` with ``\x``, ``\u`` or ``\U`` escapes. This generates
156 a string similar to that returned by :c:func:`PyObject_Repr` in Python 2.
Georg Brandl559e5d72008-06-11 18:37:52 +0000157 Called by the :func:`ascii` built-in function.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000158
159
Georg Brandl60203b42010-10-06 10:11:56 +0000160.. c:function:: PyObject* PyObject_Str(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000161
162 .. index:: builtin: str
163
164 Compute a string representation of object *o*. Returns the string
165 representation on success, *NULL* on failure. This is the equivalent of the
166 Python expression ``str(o)``. Called by the :func:`str` built-in function
167 and, therefore, by the :func:`print` function.
168
Georg Brandl60203b42010-10-06 10:11:56 +0000169.. c:function:: PyObject* PyObject_Bytes(PyObject *o)
Benjamin Petersonc15a0732008-08-26 16:46:47 +0000170
171 .. index:: builtin: bytes
172
Alexandre Vassalottieb6f8de2009-12-31 03:56:09 +0000173 Compute a bytes representation of object *o*. *NULL* is returned on
174 failure and a bytes object on success. This is equivalent to the Python
175 expression ``bytes(o)``, when *o* is not an integer. Unlike ``bytes(o)``,
176 a TypeError is raised when *o* is an integer instead of a zero-initialized
177 bytes object.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000178
Georg Brandl60203b42010-10-06 10:11:56 +0000179.. c:function:: int PyObject_IsInstance(PyObject *inst, PyObject *cls)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000180
181 Returns ``1`` if *inst* is an instance of the class *cls* or a subclass of
182 *cls*, or ``0`` if not. On error, returns ``-1`` and sets an exception. If
Georg Brandl60203b42010-10-06 10:11:56 +0000183 *cls* is a type object rather than a class object, :c:func:`PyObject_IsInstance`
Georg Brandl54a3faa2008-01-20 09:30:57 +0000184 returns ``1`` if *inst* is of type *cls*. If *cls* is a tuple, the check will
185 be done against every entry in *cls*. The result will be ``1`` when at least one
186 of the checks returns ``1``, otherwise it will be ``0``. If *inst* is not a
187 class instance and *cls* is neither a type object, nor a class object, nor a
188 tuple, *inst* must have a :attr:`__class__` attribute --- the class relationship
189 of the value of that attribute with *cls* will be used to determine the result
190 of this function.
191
192
193Subclass determination is done in a fairly straightforward way, but includes a
194wrinkle that implementors of extensions to the class system may want to be aware
195of. If :class:`A` and :class:`B` are class objects, :class:`B` is a subclass of
196:class:`A` if it inherits from :class:`A` either directly or indirectly. If
197either is not a class object, a more general mechanism is used to determine the
198class relationship of the two objects. When testing if *B* is a subclass of
Georg Brandl60203b42010-10-06 10:11:56 +0000199*A*, if *A* is *B*, :c:func:`PyObject_IsSubclass` returns true. If *A* and *B*
Georg Brandl54a3faa2008-01-20 09:30:57 +0000200are different objects, *B*'s :attr:`__bases__` attribute is searched in a
201depth-first fashion for *A* --- the presence of the :attr:`__bases__` attribute
202is considered sufficient for this determination.
203
204
Georg Brandl60203b42010-10-06 10:11:56 +0000205.. c:function:: int PyObject_IsSubclass(PyObject *derived, PyObject *cls)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000206
207 Returns ``1`` if the class *derived* is identical to or derived from the class
208 *cls*, otherwise returns ``0``. In case of an error, returns ``-1``. If *cls*
209 is a tuple, the check will be done against every entry in *cls*. The result will
210 be ``1`` when at least one of the checks returns ``1``, otherwise it will be
211 ``0``. If either *derived* or *cls* is not an actual class object (or tuple),
212 this function uses the generic algorithm described above.
213
214
Georg Brandl60203b42010-10-06 10:11:56 +0000215.. c:function:: int PyCallable_Check(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000216
217 Determine if the object *o* is callable. Return ``1`` if the object is callable
218 and ``0`` otherwise. This function always succeeds.
219
220
Georg Brandl60203b42010-10-06 10:11:56 +0000221.. c:function:: PyObject* PyObject_Call(PyObject *callable_object, PyObject *args, PyObject *kw)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000222
223 Call a callable Python object *callable_object*, with arguments given by the
224 tuple *args*, and named arguments given by the dictionary *kw*. If no named
225 arguments are needed, *kw* may be *NULL*. *args* must not be *NULL*, use an
226 empty tuple if no arguments are needed. Returns the result of the call on
227 success, or *NULL* on failure. This is the equivalent of the Python expression
228 ``callable_object(*args, **kw)``.
229
230
Georg Brandl60203b42010-10-06 10:11:56 +0000231.. c:function:: PyObject* PyObject_CallObject(PyObject *callable_object, PyObject *args)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000232
233 Call a callable Python object *callable_object*, with arguments given by the
234 tuple *args*. If no arguments are needed, then *args* may be *NULL*. Returns
235 the result of the call on success, or *NULL* on failure. This is the equivalent
236 of the Python expression ``callable_object(*args)``.
237
238
Georg Brandl60203b42010-10-06 10:11:56 +0000239.. c:function:: PyObject* PyObject_CallFunction(PyObject *callable, char *format, ...)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000240
241 Call a callable Python object *callable*, with a variable number of C arguments.
Georg Brandl60203b42010-10-06 10:11:56 +0000242 The C arguments are described using a :c:func:`Py_BuildValue` style format
Georg Brandl54a3faa2008-01-20 09:30:57 +0000243 string. The format may be *NULL*, indicating that no arguments are provided.
244 Returns the result of the call on success, or *NULL* on failure. This is the
245 equivalent of the Python expression ``callable(*args)``. Note that if you only
Georg Brandl60203b42010-10-06 10:11:56 +0000246 pass :c:type:`PyObject \*` args, :c:func:`PyObject_CallFunctionObjArgs` is a
Georg Brandl54a3faa2008-01-20 09:30:57 +0000247 faster alternative.
248
249
Georg Brandl60203b42010-10-06 10:11:56 +0000250.. c:function:: PyObject* PyObject_CallMethod(PyObject *o, char *method, char *format, ...)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000251
252 Call the method named *method* of object *o* with a variable number of C
Georg Brandl60203b42010-10-06 10:11:56 +0000253 arguments. The C arguments are described by a :c:func:`Py_BuildValue` format
Georg Brandl54a3faa2008-01-20 09:30:57 +0000254 string that should produce a tuple. The format may be *NULL*, indicating that
255 no arguments are provided. Returns the result of the call on success, or *NULL*
256 on failure. This is the equivalent of the Python expression ``o.method(args)``.
Georg Brandl60203b42010-10-06 10:11:56 +0000257 Note that if you only pass :c:type:`PyObject \*` args,
258 :c:func:`PyObject_CallMethodObjArgs` is a faster alternative.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000259
260
Georg Brandl60203b42010-10-06 10:11:56 +0000261.. c:function:: PyObject* PyObject_CallFunctionObjArgs(PyObject *callable, ..., NULL)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000262
263 Call a callable Python object *callable*, with a variable number of
Georg Brandl60203b42010-10-06 10:11:56 +0000264 :c:type:`PyObject\*` arguments. The arguments are provided as a variable number
Georg Brandl54a3faa2008-01-20 09:30:57 +0000265 of parameters followed by *NULL*. Returns the result of the call on success, or
266 *NULL* on failure.
267
268
Georg Brandl60203b42010-10-06 10:11:56 +0000269.. c:function:: PyObject* PyObject_CallMethodObjArgs(PyObject *o, PyObject *name, ..., NULL)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000270
271 Calls a method of the object *o*, where the name of the method is given as a
272 Python string object in *name*. It is called with a variable number of
Georg Brandl60203b42010-10-06 10:11:56 +0000273 :c:type:`PyObject\*` arguments. The arguments are provided as a variable number
Georg Brandl54a3faa2008-01-20 09:30:57 +0000274 of parameters followed by *NULL*. Returns the result of the call on success, or
275 *NULL* on failure.
276
277
Benjamin Peterson8f67d082010-10-17 20:54:53 +0000278.. c:function:: Py_hash_t PyObject_Hash(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000279
280 .. index:: builtin: hash
281
282 Compute and return the hash value of an object *o*. On failure, return ``-1``.
283 This is the equivalent of the Python expression ``hash(o)``.
284
Benjamin Peterson8f67d082010-10-17 20:54:53 +0000285 .. versionchanged:: 3.2
Benjamin Peterson8f67d082010-10-17 20:54:53 +0000286 The return type is now Py_hash_t. This is a signed integer the same size
287 as Py_ssize_t.
288
289
290.. c:function:: Py_hash_t PyObject_HashNotImplemented(PyObject *o)
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000291
Benjamin Petersone5384b02008-10-04 22:00:42 +0000292 Set a :exc:`TypeError` indicating that ``type(o)`` is not hashable and return ``-1``.
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000293 This function receives special treatment when stored in a ``tp_hash`` slot,
Benjamin Petersonc4fe6f32008-08-19 18:57:56 +0000294 allowing a type to explicitly indicate to the interpreter that it is not
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000295 hashable.
296
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000297
Georg Brandl60203b42010-10-06 10:11:56 +0000298.. c:function:: int PyObject_IsTrue(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000299
300 Returns ``1`` if the object *o* is considered to be true, and ``0`` otherwise.
301 This is equivalent to the Python expression ``not not o``. On failure, return
302 ``-1``.
303
304
Georg Brandl60203b42010-10-06 10:11:56 +0000305.. c:function:: int PyObject_Not(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000306
307 Returns ``0`` if the object *o* is considered to be true, and ``1`` otherwise.
308 This is equivalent to the Python expression ``not o``. On failure, return
309 ``-1``.
310
311
Georg Brandl60203b42010-10-06 10:11:56 +0000312.. c:function:: PyObject* PyObject_Type(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000313
314 .. index:: builtin: type
315
316 When *o* is non-*NULL*, returns a type object corresponding to the object type
317 of object *o*. On failure, raises :exc:`SystemError` and returns *NULL*. This
318 is equivalent to the Python expression ``type(o)``. This function increments the
319 reference count of the return value. There's really no reason to use this
320 function instead of the common expression ``o->ob_type``, which returns a
Georg Brandl60203b42010-10-06 10:11:56 +0000321 pointer of type :c:type:`PyTypeObject\*`, except when the incremented reference
Georg Brandl54a3faa2008-01-20 09:30:57 +0000322 count is needed.
323
324
Georg Brandl60203b42010-10-06 10:11:56 +0000325.. c:function:: int PyObject_TypeCheck(PyObject *o, PyTypeObject *type)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000326
327 Return true if the object *o* is of type *type* or a subtype of *type*. Both
328 parameters must be non-*NULL*.
329
330
Georg Brandl60203b42010-10-06 10:11:56 +0000331.. c:function:: Py_ssize_t PyObject_Length(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000332 Py_ssize_t PyObject_Size(PyObject *o)
333
334 .. index:: builtin: len
335
336 Return the length of object *o*. If the object *o* provides either the sequence
337 and mapping protocols, the sequence length is returned. On error, ``-1`` is
338 returned. This is the equivalent to the Python expression ``len(o)``.
339
Georg Brandl54a3faa2008-01-20 09:30:57 +0000340
Georg Brandl60203b42010-10-06 10:11:56 +0000341.. c:function:: PyObject* PyObject_GetItem(PyObject *o, PyObject *key)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000342
343 Return element of *o* corresponding to the object *key* or *NULL* on failure.
344 This is the equivalent of the Python expression ``o[key]``.
345
346
Georg Brandl60203b42010-10-06 10:11:56 +0000347.. c:function:: int PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000348
349 Map the object *key* to the value *v*. Returns ``-1`` on failure. This is the
350 equivalent of the Python statement ``o[key] = v``.
351
352
Georg Brandl60203b42010-10-06 10:11:56 +0000353.. c:function:: int PyObject_DelItem(PyObject *o, PyObject *key)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000354
355 Delete the mapping for *key* from *o*. Returns ``-1`` on failure. This is the
356 equivalent of the Python statement ``del o[key]``.
357
358
Georg Brandl60203b42010-10-06 10:11:56 +0000359.. c:function:: PyObject* PyObject_Dir(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000360
361 This is equivalent to the Python expression ``dir(o)``, returning a (possibly
362 empty) list of strings appropriate for the object argument, or *NULL* if there
363 was an error. If the argument is *NULL*, this is like the Python ``dir()``,
364 returning the names of the current locals; in this case, if no execution frame
Georg Brandl60203b42010-10-06 10:11:56 +0000365 is active then *NULL* is returned but :c:func:`PyErr_Occurred` will return false.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000366
367
Georg Brandl60203b42010-10-06 10:11:56 +0000368.. c:function:: PyObject* PyObject_GetIter(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000369
370 This is equivalent to the Python expression ``iter(o)``. It returns a new
371 iterator for the object argument, or the object itself if the object is already
372 an iterator. Raises :exc:`TypeError` and returns *NULL* if the object cannot be
373 iterated.