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