blob: fd3a6d238013be6db0ff783f277eb416dfd7f2b6 [file] [log] [blame]
Georg Brandl54a3faa2008-01-20 09:30:57 +00001.. highlightlang:: c
2
3.. _object:
4
5Object Protocol
6===============
7
8
9.. cfunction:: int PyObject_Print(PyObject *o, FILE *fp, int flags)
10
11 Print an object *o*, on file *fp*. Returns ``-1`` on error. The flags argument
12 is used to enable certain printing options. The only option currently supported
13 is :const:`Py_PRINT_RAW`; if given, the :func:`str` of the object is written
14 instead of the :func:`repr`.
15
16
17.. cfunction:: int PyObject_HasAttr(PyObject *o, PyObject *attr_name)
18
19 Returns ``1`` if *o* has the attribute *attr_name*, and ``0`` otherwise. This
20 is equivalent to the Python expression ``hasattr(o, attr_name)``. This function
21 always succeeds.
22
23
24.. cfunction:: int PyObject_HasAttrString(PyObject *o, const char *attr_name)
25
26 Returns ``1`` if *o* has the attribute *attr_name*, and ``0`` otherwise. This
27 is equivalent to the Python expression ``hasattr(o, attr_name)``. This function
28 always succeeds.
29
30
31.. cfunction:: PyObject* PyObject_GetAttr(PyObject *o, PyObject *attr_name)
32
33 Retrieve an attribute named *attr_name* from object *o*. Returns the attribute
34 value on success, or *NULL* on failure. This is the equivalent of the Python
35 expression ``o.attr_name``.
36
37
38.. cfunction:: PyObject* PyObject_GetAttrString(PyObject *o, const char *attr_name)
39
40 Retrieve an attribute named *attr_name* from object *o*. Returns the attribute
41 value on success, or *NULL* on failure. This is the equivalent of the Python
42 expression ``o.attr_name``.
43
44
Benjamin Petersond23f8222009-04-05 19:13:16 +000045.. cfunction:: PyObject* PyObject_GenericGetAttr(PyObject *o, PyObject *name)
46
47 Generic attribute getter function that is meant to be put into a type
48 object's ``tp_getattro`` slot. It looks for a descriptor in the dictionary
49 of classes in the object's MRO as well as an attribute in the object's
50 :attr:`__dict__` (if present). As outlined in :ref:`descriptors`, data
51 descriptors take preference over instance attributes, while non-data
52 descriptors don't. Otherwise, an :exc:`AttributeError` is raised.
53
54
Georg Brandl54a3faa2008-01-20 09:30:57 +000055.. cfunction:: int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v)
56
57 Set the value of the attribute named *attr_name*, for object *o*, to the value
58 *v*. Returns ``-1`` on failure. This is the equivalent of the Python statement
59 ``o.attr_name = v``.
60
61
62.. cfunction:: int PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v)
63
64 Set the value of the attribute named *attr_name*, for object *o*, to the value
65 *v*. Returns ``-1`` on failure. This is the equivalent of the Python statement
66 ``o.attr_name = v``.
67
68
Benjamin Petersond23f8222009-04-05 19:13:16 +000069.. cfunction:: int PyObject_GenericSetAttr(PyObject *o, PyObject *name, PyObject *value)
70
71 Generic attribute setter function that is meant to be put into a type
72 object's ``tp_setattro`` slot. It looks for a data descriptor in the
73 dictionary of classes in the object's MRO, and if found it takes preference
74 over setting the attribute in the instance dictionary. Otherwise, the
75 attribute is set in the object's :attr:`__dict__` (if present). Otherwise,
76 an :exc:`AttributeError` is raised and ``-1`` is returned.
77
78
Georg Brandl54a3faa2008-01-20 09:30:57 +000079.. cfunction:: int PyObject_DelAttr(PyObject *o, PyObject *attr_name)
80
81 Delete attribute named *attr_name*, for object *o*. Returns ``-1`` on failure.
82 This is the equivalent of the Python statement ``del o.attr_name``.
83
84
85.. cfunction:: int PyObject_DelAttrString(PyObject *o, const char *attr_name)
86
87 Delete attribute named *attr_name*, for object *o*. Returns ``-1`` on failure.
88 This is the equivalent of the Python statement ``del o.attr_name``.
89
90
91.. cfunction:: PyObject* PyObject_RichCompare(PyObject *o1, PyObject *o2, int opid)
92
93 Compare the values of *o1* and *o2* using the operation specified by *opid*,
94 which must be one of :const:`Py_LT`, :const:`Py_LE`, :const:`Py_EQ`,
95 :const:`Py_NE`, :const:`Py_GT`, or :const:`Py_GE`, corresponding to ``<``,
96 ``<=``, ``==``, ``!=``, ``>``, or ``>=`` respectively. This is the equivalent of
97 the Python expression ``o1 op o2``, where ``op`` is the operator corresponding
98 to *opid*. Returns the value of the comparison on success, or *NULL* on failure.
99
100
101.. cfunction:: int PyObject_RichCompareBool(PyObject *o1, PyObject *o2, int opid)
102
103 Compare the values of *o1* and *o2* using the operation specified by *opid*,
104 which must be one of :const:`Py_LT`, :const:`Py_LE`, :const:`Py_EQ`,
105 :const:`Py_NE`, :const:`Py_GT`, or :const:`Py_GE`, corresponding to ``<``,
106 ``<=``, ``==``, ``!=``, ``>``, or ``>=`` respectively. Returns ``-1`` on error,
107 ``0`` if the result is false, ``1`` otherwise. This is the equivalent of the
108 Python expression ``o1 op o2``, where ``op`` is the operator corresponding to
109 *opid*.
110
Eli Bendersky5bcc5632011-01-15 10:33:07 +0000111.. note::
Georg Brandl1f3fa042011-01-17 18:16:16 +0000112 If *o1* and *o2* are the same object, :cfunc:`PyObject_RichCompareBool`
Eli Bendersky5bcc5632011-01-15 10:33:07 +0000113 will always return ``1`` for :const:`Py_EQ` and ``0`` for :const:`Py_NE`.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000114
Georg Brandl54a3faa2008-01-20 09:30:57 +0000115.. cfunction:: PyObject* PyObject_Repr(PyObject *o)
116
117 .. index:: builtin: repr
118
119 Compute a string representation of object *o*. Returns the string
120 representation on success, *NULL* on failure. This is the equivalent of the
Georg Brandl559e5d72008-06-11 18:37:52 +0000121 Python expression ``repr(o)``. Called by the :func:`repr` built-in function.
122
123
124.. cfunction:: PyObject* PyObject_ASCII(PyObject *o)
125
126 .. index:: builtin: ascii
127
128 As :cfunc:`PyObject_Repr`, compute a string representation of object *o*, but
129 escape the non-ASCII characters in the string returned by
130 :cfunc:`PyObject_Repr` with ``\x``, ``\u`` or ``\U`` escapes. This generates
131 a string similar to that returned by :cfunc:`PyObject_Repr` in Python 2.
132 Called by the :func:`ascii` built-in function.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000133
134
135.. cfunction:: PyObject* PyObject_Str(PyObject *o)
136
137 .. index:: builtin: str
138
139 Compute a string representation of object *o*. Returns the string
140 representation on success, *NULL* on failure. This is the equivalent of the
141 Python expression ``str(o)``. Called by the :func:`str` built-in function
142 and, therefore, by the :func:`print` function.
143
Benjamin Petersonc15a0732008-08-26 16:46:47 +0000144.. cfunction:: PyObject* PyObject_Bytes(PyObject *o)
145
146 .. index:: builtin: bytes
147
148 Compute a bytes representation of object *o*. *NULL* is returned on failure
149 and a bytes object on success. This is equivalent to the Python expression
150 ``bytes(o)``.
151
Georg Brandl54a3faa2008-01-20 09:30:57 +0000152
Georg Brandl54a3faa2008-01-20 09:30:57 +0000153.. cfunction:: int PyObject_IsInstance(PyObject *inst, PyObject *cls)
154
155 Returns ``1`` if *inst* is an instance of the class *cls* or a subclass of
156 *cls*, or ``0`` if not. On error, returns ``-1`` and sets an exception. If
157 *cls* is a type object rather than a class object, :cfunc:`PyObject_IsInstance`
158 returns ``1`` if *inst* is of type *cls*. If *cls* is a tuple, the check will
159 be done against every entry in *cls*. The result will be ``1`` when at least one
160 of the checks returns ``1``, otherwise it will be ``0``. If *inst* is not a
161 class instance and *cls* is neither a type object, nor a class object, nor a
162 tuple, *inst* must have a :attr:`__class__` attribute --- the class relationship
163 of the value of that attribute with *cls* will be used to determine the result
164 of this function.
165
166
167Subclass determination is done in a fairly straightforward way, but includes a
168wrinkle that implementors of extensions to the class system may want to be aware
169of. If :class:`A` and :class:`B` are class objects, :class:`B` is a subclass of
170:class:`A` if it inherits from :class:`A` either directly or indirectly. If
171either is not a class object, a more general mechanism is used to determine the
172class relationship of the two objects. When testing if *B* is a subclass of
173*A*, if *A* is *B*, :cfunc:`PyObject_IsSubclass` returns true. If *A* and *B*
174are different objects, *B*'s :attr:`__bases__` attribute is searched in a
175depth-first fashion for *A* --- the presence of the :attr:`__bases__` attribute
176is considered sufficient for this determination.
177
178
179.. cfunction:: int PyObject_IsSubclass(PyObject *derived, PyObject *cls)
180
181 Returns ``1`` if the class *derived* is identical to or derived from the class
182 *cls*, otherwise returns ``0``. In case of an error, returns ``-1``. If *cls*
183 is a tuple, the check will be done against every entry in *cls*. The result will
184 be ``1`` when at least one of the checks returns ``1``, otherwise it will be
185 ``0``. If either *derived* or *cls* is not an actual class object (or tuple),
186 this function uses the generic algorithm described above.
187
188
189.. cfunction:: int PyCallable_Check(PyObject *o)
190
191 Determine if the object *o* is callable. Return ``1`` if the object is callable
192 and ``0`` otherwise. This function always succeeds.
193
194
195.. cfunction:: PyObject* PyObject_Call(PyObject *callable_object, PyObject *args, PyObject *kw)
196
197 Call a callable Python object *callable_object*, with arguments given by the
198 tuple *args*, and named arguments given by the dictionary *kw*. If no named
199 arguments are needed, *kw* may be *NULL*. *args* must not be *NULL*, use an
200 empty tuple if no arguments are needed. Returns the result of the call on
201 success, or *NULL* on failure. This is the equivalent of the Python expression
202 ``callable_object(*args, **kw)``.
203
204
205.. cfunction:: PyObject* PyObject_CallObject(PyObject *callable_object, PyObject *args)
206
207 Call a callable Python object *callable_object*, with arguments given by the
208 tuple *args*. If no arguments are needed, then *args* may be *NULL*. Returns
209 the result of the call on success, or *NULL* on failure. This is the equivalent
210 of the Python expression ``callable_object(*args)``.
211
212
213.. cfunction:: PyObject* PyObject_CallFunction(PyObject *callable, char *format, ...)
214
215 Call a callable Python object *callable*, with a variable number of C arguments.
216 The C arguments are described using a :cfunc:`Py_BuildValue` style format
217 string. The format may be *NULL*, indicating that no arguments are provided.
218 Returns the result of the call on success, or *NULL* on failure. This is the
219 equivalent of the Python expression ``callable(*args)``. Note that if you only
220 pass :ctype:`PyObject \*` args, :cfunc:`PyObject_CallFunctionObjArgs` is a
221 faster alternative.
222
223
224.. cfunction:: PyObject* PyObject_CallMethod(PyObject *o, char *method, char *format, ...)
225
226 Call the method named *method* of object *o* with a variable number of C
227 arguments. The C arguments are described by a :cfunc:`Py_BuildValue` format
228 string that should produce a tuple. The format may be *NULL*, indicating that
229 no arguments are provided. Returns the result of the call on success, or *NULL*
230 on failure. This is the equivalent of the Python expression ``o.method(args)``.
231 Note that if you only pass :ctype:`PyObject \*` args,
232 :cfunc:`PyObject_CallMethodObjArgs` is a faster alternative.
233
234
235.. cfunction:: PyObject* PyObject_CallFunctionObjArgs(PyObject *callable, ..., NULL)
236
237 Call a callable Python object *callable*, with a variable number of
238 :ctype:`PyObject\*` arguments. The arguments are provided as a variable number
239 of parameters followed by *NULL*. Returns the result of the call on success, or
240 *NULL* on failure.
241
242
243.. cfunction:: PyObject* PyObject_CallMethodObjArgs(PyObject *o, PyObject *name, ..., NULL)
244
245 Calls a method of the object *o*, where the name of the method is given as a
246 Python string object in *name*. It is called with a variable number of
247 :ctype:`PyObject\*` arguments. The arguments are provided as a variable number
248 of parameters followed by *NULL*. Returns the result of the call on success, or
249 *NULL* on failure.
250
251
252.. cfunction:: long PyObject_Hash(PyObject *o)
253
254 .. index:: builtin: hash
255
256 Compute and return the hash value of an object *o*. On failure, return ``-1``.
257 This is the equivalent of the Python expression ``hash(o)``.
258
259
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000260.. cfunction:: long PyObject_HashNotImplemented(PyObject *o)
261
Benjamin Petersone5384b02008-10-04 22:00:42 +0000262 Set a :exc:`TypeError` indicating that ``type(o)`` is not hashable and return ``-1``.
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000263 This function receives special treatment when stored in a ``tp_hash`` slot,
Benjamin Petersonc4fe6f32008-08-19 18:57:56 +0000264 allowing a type to explicitly indicate to the interpreter that it is not
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000265 hashable.
266
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000267
Georg Brandl54a3faa2008-01-20 09:30:57 +0000268.. cfunction:: int PyObject_IsTrue(PyObject *o)
269
270 Returns ``1`` if the object *o* is considered to be true, and ``0`` otherwise.
271 This is equivalent to the Python expression ``not not o``. On failure, return
272 ``-1``.
273
274
275.. cfunction:: int PyObject_Not(PyObject *o)
276
277 Returns ``0`` if the object *o* is considered to be true, and ``1`` otherwise.
278 This is equivalent to the Python expression ``not o``. On failure, return
279 ``-1``.
280
281
282.. cfunction:: PyObject* PyObject_Type(PyObject *o)
283
284 .. index:: builtin: type
285
286 When *o* is non-*NULL*, returns a type object corresponding to the object type
287 of object *o*. On failure, raises :exc:`SystemError` and returns *NULL*. This
288 is equivalent to the Python expression ``type(o)``. This function increments the
289 reference count of the return value. There's really no reason to use this
290 function instead of the common expression ``o->ob_type``, which returns a
291 pointer of type :ctype:`PyTypeObject\*`, except when the incremented reference
292 count is needed.
293
294
295.. cfunction:: int PyObject_TypeCheck(PyObject *o, PyTypeObject *type)
296
297 Return true if the object *o* is of type *type* or a subtype of *type*. Both
298 parameters must be non-*NULL*.
299
300
301.. cfunction:: Py_ssize_t PyObject_Length(PyObject *o)
302 Py_ssize_t PyObject_Size(PyObject *o)
303
304 .. index:: builtin: len
305
306 Return the length of object *o*. If the object *o* provides either the sequence
307 and mapping protocols, the sequence length is returned. On error, ``-1`` is
308 returned. This is the equivalent to the Python expression ``len(o)``.
309
Georg Brandl54a3faa2008-01-20 09:30:57 +0000310
311.. cfunction:: PyObject* PyObject_GetItem(PyObject *o, PyObject *key)
312
313 Return element of *o* corresponding to the object *key* or *NULL* on failure.
314 This is the equivalent of the Python expression ``o[key]``.
315
316
317.. cfunction:: int PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v)
318
319 Map the object *key* to the value *v*. Returns ``-1`` on failure. This is the
320 equivalent of the Python statement ``o[key] = v``.
321
322
323.. cfunction:: int PyObject_DelItem(PyObject *o, PyObject *key)
324
325 Delete the mapping for *key* from *o*. Returns ``-1`` on failure. This is the
326 equivalent of the Python statement ``del o[key]``.
327
328
329.. cfunction:: PyObject* PyObject_Dir(PyObject *o)
330
331 This is equivalent to the Python expression ``dir(o)``, returning a (possibly
332 empty) list of strings appropriate for the object argument, or *NULL* if there
333 was an error. If the argument is *NULL*, this is like the Python ``dir()``,
334 returning the names of the current locals; in this case, if no execution frame
335 is active then *NULL* is returned but :cfunc:`PyErr_Occurred` will return false.
336
337
338.. cfunction:: PyObject* PyObject_GetIter(PyObject *o)
339
340 This is equivalent to the Python expression ``iter(o)``. It returns a new
341 iterator for the object argument, or the object itself if the object is already
342 an iterator. Raises :exc:`TypeError` and returns *NULL* if the object cannot be
343 iterated.