blob: a7be156d162e2b75273c439c2ac8edd67682c891 [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
111
Georg Brandl54a3faa2008-01-20 09:30:57 +0000112.. cfunction:: PyObject* PyObject_Repr(PyObject *o)
113
114 .. index:: builtin: repr
115
116 Compute a string representation of object *o*. Returns the string
117 representation on success, *NULL* on failure. This is the equivalent of the
Georg Brandl559e5d72008-06-11 18:37:52 +0000118 Python expression ``repr(o)``. Called by the :func:`repr` built-in function.
119
120
121.. cfunction:: PyObject* PyObject_ASCII(PyObject *o)
122
123 .. index:: builtin: ascii
124
125 As :cfunc:`PyObject_Repr`, compute a string representation of object *o*, but
126 escape the non-ASCII characters in the string returned by
127 :cfunc:`PyObject_Repr` with ``\x``, ``\u`` or ``\U`` escapes. This generates
128 a string similar to that returned by :cfunc:`PyObject_Repr` in Python 2.
129 Called by the :func:`ascii` built-in function.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000130
131
132.. cfunction:: PyObject* PyObject_Str(PyObject *o)
133
134 .. index:: builtin: str
135
136 Compute a string representation of object *o*. Returns the string
137 representation on success, *NULL* on failure. This is the equivalent of the
138 Python expression ``str(o)``. Called by the :func:`str` built-in function
139 and, therefore, by the :func:`print` function.
140
Benjamin Petersonc15a0732008-08-26 16:46:47 +0000141.. cfunction:: PyObject* PyObject_Bytes(PyObject *o)
142
143 .. index:: builtin: bytes
144
Alexandre Vassalottieb6f8de2009-12-31 03:56:09 +0000145 Compute a bytes representation of object *o*. *NULL* is returned on
146 failure and a bytes object on success. This is equivalent to the Python
147 expression ``bytes(o)``, when *o* is not an integer. Unlike ``bytes(o)``,
148 a TypeError is raised when *o* is an integer instead of a zero-initialized
149 bytes object.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000150
Georg Brandl54a3faa2008-01-20 09:30:57 +0000151.. cfunction:: int PyObject_IsInstance(PyObject *inst, PyObject *cls)
152
153 Returns ``1`` if *inst* is an instance of the class *cls* or a subclass of
154 *cls*, or ``0`` if not. On error, returns ``-1`` and sets an exception. If
155 *cls* is a type object rather than a class object, :cfunc:`PyObject_IsInstance`
156 returns ``1`` if *inst* is of type *cls*. If *cls* is a tuple, the check will
157 be done against every entry in *cls*. The result will be ``1`` when at least one
158 of the checks returns ``1``, otherwise it will be ``0``. If *inst* is not a
159 class instance and *cls* is neither a type object, nor a class object, nor a
160 tuple, *inst* must have a :attr:`__class__` attribute --- the class relationship
161 of the value of that attribute with *cls* will be used to determine the result
162 of this function.
163
164
165Subclass determination is done in a fairly straightforward way, but includes a
166wrinkle that implementors of extensions to the class system may want to be aware
167of. If :class:`A` and :class:`B` are class objects, :class:`B` is a subclass of
168:class:`A` if it inherits from :class:`A` either directly or indirectly. If
169either is not a class object, a more general mechanism is used to determine the
170class relationship of the two objects. When testing if *B* is a subclass of
171*A*, if *A* is *B*, :cfunc:`PyObject_IsSubclass` returns true. If *A* and *B*
172are different objects, *B*'s :attr:`__bases__` attribute is searched in a
173depth-first fashion for *A* --- the presence of the :attr:`__bases__` attribute
174is considered sufficient for this determination.
175
176
177.. cfunction:: int PyObject_IsSubclass(PyObject *derived, PyObject *cls)
178
179 Returns ``1`` if the class *derived* is identical to or derived from the class
180 *cls*, otherwise returns ``0``. In case of an error, returns ``-1``. If *cls*
181 is a tuple, the check will be done against every entry in *cls*. The result will
182 be ``1`` when at least one of the checks returns ``1``, otherwise it will be
183 ``0``. If either *derived* or *cls* is not an actual class object (or tuple),
184 this function uses the generic algorithm described above.
185
186
187.. cfunction:: int PyCallable_Check(PyObject *o)
188
189 Determine if the object *o* is callable. Return ``1`` if the object is callable
190 and ``0`` otherwise. This function always succeeds.
191
192
193.. cfunction:: PyObject* PyObject_Call(PyObject *callable_object, PyObject *args, PyObject *kw)
194
195 Call a callable Python object *callable_object*, with arguments given by the
196 tuple *args*, and named arguments given by the dictionary *kw*. If no named
197 arguments are needed, *kw* may be *NULL*. *args* must not be *NULL*, use an
198 empty tuple if no arguments are needed. Returns the result of the call on
199 success, or *NULL* on failure. This is the equivalent of the Python expression
200 ``callable_object(*args, **kw)``.
201
202
203.. cfunction:: PyObject* PyObject_CallObject(PyObject *callable_object, PyObject *args)
204
205 Call a callable Python object *callable_object*, with arguments given by the
206 tuple *args*. If no arguments are needed, then *args* may be *NULL*. Returns
207 the result of the call on success, or *NULL* on failure. This is the equivalent
208 of the Python expression ``callable_object(*args)``.
209
210
211.. cfunction:: PyObject* PyObject_CallFunction(PyObject *callable, char *format, ...)
212
213 Call a callable Python object *callable*, with a variable number of C arguments.
214 The C arguments are described using a :cfunc:`Py_BuildValue` style format
215 string. The format may be *NULL*, indicating that no arguments are provided.
216 Returns the result of the call on success, or *NULL* on failure. This is the
217 equivalent of the Python expression ``callable(*args)``. Note that if you only
218 pass :ctype:`PyObject \*` args, :cfunc:`PyObject_CallFunctionObjArgs` is a
219 faster alternative.
220
221
222.. cfunction:: PyObject* PyObject_CallMethod(PyObject *o, char *method, char *format, ...)
223
224 Call the method named *method* of object *o* with a variable number of C
225 arguments. The C arguments are described by a :cfunc:`Py_BuildValue` format
226 string that should produce a tuple. The format may be *NULL*, indicating that
227 no arguments are provided. Returns the result of the call on success, or *NULL*
228 on failure. This is the equivalent of the Python expression ``o.method(args)``.
229 Note that if you only pass :ctype:`PyObject \*` args,
230 :cfunc:`PyObject_CallMethodObjArgs` is a faster alternative.
231
232
233.. cfunction:: PyObject* PyObject_CallFunctionObjArgs(PyObject *callable, ..., NULL)
234
235 Call a callable Python object *callable*, with a variable number of
236 :ctype:`PyObject\*` arguments. The arguments are provided as a variable number
237 of parameters followed by *NULL*. Returns the result of the call on success, or
238 *NULL* on failure.
239
240
241.. cfunction:: PyObject* PyObject_CallMethodObjArgs(PyObject *o, PyObject *name, ..., NULL)
242
243 Calls a method of the object *o*, where the name of the method is given as a
244 Python string object in *name*. It is called with a variable number of
245 :ctype:`PyObject\*` arguments. The arguments are provided as a variable number
246 of parameters followed by *NULL*. Returns the result of the call on success, or
247 *NULL* on failure.
248
249
250.. cfunction:: long PyObject_Hash(PyObject *o)
251
252 .. index:: builtin: hash
253
254 Compute and return the hash value of an object *o*. On failure, return ``-1``.
255 This is the equivalent of the Python expression ``hash(o)``.
256
257
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000258.. cfunction:: long PyObject_HashNotImplemented(PyObject *o)
259
Benjamin Petersone5384b02008-10-04 22:00:42 +0000260 Set a :exc:`TypeError` indicating that ``type(o)`` is not hashable and return ``-1``.
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000261 This function receives special treatment when stored in a ``tp_hash`` slot,
Benjamin Petersonc4fe6f32008-08-19 18:57:56 +0000262 allowing a type to explicitly indicate to the interpreter that it is not
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000263 hashable.
264
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000265
Georg Brandl54a3faa2008-01-20 09:30:57 +0000266.. cfunction:: int PyObject_IsTrue(PyObject *o)
267
268 Returns ``1`` if the object *o* is considered to be true, and ``0`` otherwise.
269 This is equivalent to the Python expression ``not not o``. On failure, return
270 ``-1``.
271
272
273.. cfunction:: int PyObject_Not(PyObject *o)
274
275 Returns ``0`` if the object *o* is considered to be true, and ``1`` otherwise.
276 This is equivalent to the Python expression ``not o``. On failure, return
277 ``-1``.
278
279
280.. cfunction:: PyObject* PyObject_Type(PyObject *o)
281
282 .. index:: builtin: type
283
284 When *o* is non-*NULL*, returns a type object corresponding to the object type
285 of object *o*. On failure, raises :exc:`SystemError` and returns *NULL*. This
286 is equivalent to the Python expression ``type(o)``. This function increments the
287 reference count of the return value. There's really no reason to use this
288 function instead of the common expression ``o->ob_type``, which returns a
289 pointer of type :ctype:`PyTypeObject\*`, except when the incremented reference
290 count is needed.
291
292
293.. cfunction:: int PyObject_TypeCheck(PyObject *o, PyTypeObject *type)
294
295 Return true if the object *o* is of type *type* or a subtype of *type*. Both
296 parameters must be non-*NULL*.
297
298
299.. cfunction:: Py_ssize_t PyObject_Length(PyObject *o)
300 Py_ssize_t PyObject_Size(PyObject *o)
301
302 .. index:: builtin: len
303
304 Return the length of object *o*. If the object *o* provides either the sequence
305 and mapping protocols, the sequence length is returned. On error, ``-1`` is
306 returned. This is the equivalent to the Python expression ``len(o)``.
307
Georg Brandl54a3faa2008-01-20 09:30:57 +0000308
309.. cfunction:: PyObject* PyObject_GetItem(PyObject *o, PyObject *key)
310
311 Return element of *o* corresponding to the object *key* or *NULL* on failure.
312 This is the equivalent of the Python expression ``o[key]``.
313
314
315.. cfunction:: int PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v)
316
317 Map the object *key* to the value *v*. Returns ``-1`` on failure. This is the
318 equivalent of the Python statement ``o[key] = v``.
319
320
321.. cfunction:: int PyObject_DelItem(PyObject *o, PyObject *key)
322
323 Delete the mapping for *key* from *o*. Returns ``-1`` on failure. This is the
324 equivalent of the Python statement ``del o[key]``.
325
326
327.. cfunction:: PyObject* PyObject_Dir(PyObject *o)
328
329 This is equivalent to the Python expression ``dir(o)``, returning a (possibly
330 empty) list of strings appropriate for the object argument, or *NULL* if there
331 was an error. If the argument is *NULL*, this is like the Python ``dir()``,
332 returning the names of the current locals; in this case, if no execution frame
333 is active then *NULL* is returned but :cfunc:`PyErr_Occurred` will return false.
334
335
336.. cfunction:: PyObject* PyObject_GetIter(PyObject *o)
337
338 This is equivalent to the Python expression ``iter(o)``. It returns a new
339 iterator for the object argument, or the object itself if the object is already
340 an iterator. Raises :exc:`TypeError` and returns *NULL* if the object cannot be
341 iterated.