blob: 791cdbb042b9e2431601b17f15b11547c228d9a4 [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
Benjamin Peterson43844352012-02-20 08:48:25 -0500109 .. versionadded:: 3.3
110
Benjamin Peterson8eb12692012-02-19 19:59:10 -0500111
112.. c:function:: int PyType_GenericSetDict(PyObject *o, void *context)
113
114 A generic implementation for the setter of a ``__dict__`` descriptor. This
115 implementation does not allow the dictionary to be deleted.
116
Benjamin Peterson43844352012-02-20 08:48:25 -0500117 .. versionadded:: 3.3
118
Benjamin Peterson8eb12692012-02-19 19:59:10 -0500119
Georg Brandl60203b42010-10-06 10:11:56 +0000120.. c:function:: PyObject* PyObject_RichCompare(PyObject *o1, PyObject *o2, int opid)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000121
122 Compare the values of *o1* and *o2* using the operation specified by *opid*,
123 which must be one of :const:`Py_LT`, :const:`Py_LE`, :const:`Py_EQ`,
124 :const:`Py_NE`, :const:`Py_GT`, or :const:`Py_GE`, corresponding to ``<``,
125 ``<=``, ``==``, ``!=``, ``>``, or ``>=`` respectively. This is the equivalent of
126 the Python expression ``o1 op o2``, where ``op`` is the operator corresponding
127 to *opid*. Returns the value of the comparison on success, or *NULL* on failure.
128
129
Georg Brandl60203b42010-10-06 10:11:56 +0000130.. c:function:: int PyObject_RichCompareBool(PyObject *o1, PyObject *o2, int opid)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000131
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. Returns ``-1`` on error,
136 ``0`` if the result is false, ``1`` otherwise. This is the equivalent of the
137 Python expression ``o1 op o2``, where ``op`` is the operator corresponding to
138 *opid*.
139
Eli Benderskyad30c422011-01-15 10:23:34 +0000140.. note::
141 If *o1* and *o2* are the same object, :c:func:`PyObject_RichCompareBool`
142 will always return ``1`` for :const:`Py_EQ` and ``0`` for :const:`Py_NE`.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000143
Georg Brandl60203b42010-10-06 10:11:56 +0000144.. c:function:: PyObject* PyObject_Repr(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000145
146 .. index:: builtin: repr
147
148 Compute a string representation of object *o*. Returns the string
149 representation on success, *NULL* on failure. This is the equivalent of the
Georg Brandl559e5d72008-06-11 18:37:52 +0000150 Python expression ``repr(o)``. Called by the :func:`repr` built-in function.
151
152
Georg Brandl60203b42010-10-06 10:11:56 +0000153.. c:function:: PyObject* PyObject_ASCII(PyObject *o)
Georg Brandl559e5d72008-06-11 18:37:52 +0000154
155 .. index:: builtin: ascii
156
Georg Brandl60203b42010-10-06 10:11:56 +0000157 As :c:func:`PyObject_Repr`, compute a string representation of object *o*, but
Georg Brandl559e5d72008-06-11 18:37:52 +0000158 escape the non-ASCII characters in the string returned by
Georg Brandl60203b42010-10-06 10:11:56 +0000159 :c:func:`PyObject_Repr` with ``\x``, ``\u`` or ``\U`` escapes. This generates
160 a string similar to that returned by :c:func:`PyObject_Repr` in Python 2.
Georg Brandl559e5d72008-06-11 18:37:52 +0000161 Called by the :func:`ascii` built-in function.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000162
Chris Jerdonekbb4e9412012-11-28 01:38:40 -0800163 .. index:: string; PyObject_Str (C function)
164
Georg Brandl54a3faa2008-01-20 09:30:57 +0000165
Georg Brandl60203b42010-10-06 10:11:56 +0000166.. c:function:: PyObject* PyObject_Str(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000167
Georg Brandl54a3faa2008-01-20 09:30:57 +0000168 Compute a string representation of object *o*. Returns the string
169 representation on success, *NULL* on failure. This is the equivalent of the
170 Python expression ``str(o)``. Called by the :func:`str` built-in function
171 and, therefore, by the :func:`print` function.
172
Georg Brandl60203b42010-10-06 10:11:56 +0000173.. c:function:: PyObject* PyObject_Bytes(PyObject *o)
Benjamin Petersonc15a0732008-08-26 16:46:47 +0000174
175 .. index:: builtin: bytes
176
Alexandre Vassalottieb6f8de2009-12-31 03:56:09 +0000177 Compute a bytes representation of object *o*. *NULL* is returned on
178 failure and a bytes object on success. This is equivalent to the Python
179 expression ``bytes(o)``, when *o* is not an integer. Unlike ``bytes(o)``,
180 a TypeError is raised when *o* is an integer instead of a zero-initialized
181 bytes object.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000182
Georg Brandl60203b42010-10-06 10:11:56 +0000183.. c:function:: int PyObject_IsInstance(PyObject *inst, PyObject *cls)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000184
185 Returns ``1`` if *inst* is an instance of the class *cls* or a subclass of
186 *cls*, or ``0`` if not. On error, returns ``-1`` and sets an exception. If
Georg Brandl60203b42010-10-06 10:11:56 +0000187 *cls* is a type object rather than a class object, :c:func:`PyObject_IsInstance`
Georg Brandl54a3faa2008-01-20 09:30:57 +0000188 returns ``1`` if *inst* is of type *cls*. If *cls* is a tuple, the check will
189 be done against every entry in *cls*. The result will be ``1`` when at least one
190 of the checks returns ``1``, otherwise it will be ``0``. If *inst* is not a
191 class instance and *cls* is neither a type object, nor a class object, nor a
192 tuple, *inst* must have a :attr:`__class__` attribute --- the class relationship
193 of the value of that attribute with *cls* will be used to determine the result
194 of this function.
195
196
197Subclass determination is done in a fairly straightforward way, but includes a
198wrinkle that implementors of extensions to the class system may want to be aware
199of. If :class:`A` and :class:`B` are class objects, :class:`B` is a subclass of
200:class:`A` if it inherits from :class:`A` either directly or indirectly. If
201either is not a class object, a more general mechanism is used to determine the
202class relationship of the two objects. When testing if *B* is a subclass of
Georg Brandl60203b42010-10-06 10:11:56 +0000203*A*, if *A* is *B*, :c:func:`PyObject_IsSubclass` returns true. If *A* and *B*
Georg Brandl54a3faa2008-01-20 09:30:57 +0000204are different objects, *B*'s :attr:`__bases__` attribute is searched in a
205depth-first fashion for *A* --- the presence of the :attr:`__bases__` attribute
206is considered sufficient for this determination.
207
208
Georg Brandl60203b42010-10-06 10:11:56 +0000209.. c:function:: int PyObject_IsSubclass(PyObject *derived, PyObject *cls)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000210
211 Returns ``1`` if the class *derived* is identical to or derived from the class
212 *cls*, otherwise returns ``0``. In case of an error, returns ``-1``. If *cls*
213 is a tuple, the check will be done against every entry in *cls*. The result will
214 be ``1`` when at least one of the checks returns ``1``, otherwise it will be
215 ``0``. If either *derived* or *cls* is not an actual class object (or tuple),
216 this function uses the generic algorithm described above.
217
218
Georg Brandl60203b42010-10-06 10:11:56 +0000219.. c:function:: int PyCallable_Check(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000220
221 Determine if the object *o* is callable. Return ``1`` if the object is callable
222 and ``0`` otherwise. This function always succeeds.
223
224
Georg Brandl60203b42010-10-06 10:11:56 +0000225.. c:function:: PyObject* PyObject_Call(PyObject *callable_object, PyObject *args, PyObject *kw)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000226
227 Call a callable Python object *callable_object*, with arguments given by the
228 tuple *args*, and named arguments given by the dictionary *kw*. If no named
229 arguments are needed, *kw* may be *NULL*. *args* must not be *NULL*, use an
230 empty tuple if no arguments are needed. Returns the result of the call on
231 success, or *NULL* on failure. This is the equivalent of the Python expression
232 ``callable_object(*args, **kw)``.
233
234
Georg Brandl60203b42010-10-06 10:11:56 +0000235.. c:function:: PyObject* PyObject_CallObject(PyObject *callable_object, PyObject *args)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000236
237 Call a callable Python object *callable_object*, with arguments given by the
238 tuple *args*. If no arguments are needed, then *args* may be *NULL*. Returns
239 the result of the call on success, or *NULL* on failure. This is the equivalent
240 of the Python expression ``callable_object(*args)``.
241
242
Serhiy Storchaka1cfebc72013-05-29 18:50:54 +0300243.. c:function:: PyObject* PyObject_CallFunction(PyObject *callable, const char *format, ...)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000244
245 Call a callable Python object *callable*, with a variable number of C arguments.
Georg Brandl60203b42010-10-06 10:11:56 +0000246 The C arguments are described using a :c:func:`Py_BuildValue` style format
Georg Brandl54a3faa2008-01-20 09:30:57 +0000247 string. The format may be *NULL*, indicating that no arguments are provided.
248 Returns the result of the call on success, or *NULL* on failure. This is the
249 equivalent of the Python expression ``callable(*args)``. Note that if you only
Georg Brandl60203b42010-10-06 10:11:56 +0000250 pass :c:type:`PyObject \*` args, :c:func:`PyObject_CallFunctionObjArgs` is a
Georg Brandl54a3faa2008-01-20 09:30:57 +0000251 faster alternative.
252
Serhiy Storchaka1cfebc72013-05-29 18:50:54 +0300253 .. versionchanged:: 3.4
254 The type of *format* was changed from ``char *``.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000255
Serhiy Storchaka1cfebc72013-05-29 18:50:54 +0300256
257.. c:function:: PyObject* PyObject_CallMethod(PyObject *o, const char *method, const char *format, ...)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000258
259 Call the method named *method* of object *o* with a variable number of C
Georg Brandl60203b42010-10-06 10:11:56 +0000260 arguments. The C arguments are described by a :c:func:`Py_BuildValue` format
Georg Brandl54a3faa2008-01-20 09:30:57 +0000261 string that should produce a tuple. The format may be *NULL*, indicating that
262 no arguments are provided. Returns the result of the call on success, or *NULL*
263 on failure. This is the equivalent of the Python expression ``o.method(args)``.
Georg Brandl60203b42010-10-06 10:11:56 +0000264 Note that if you only pass :c:type:`PyObject \*` args,
265 :c:func:`PyObject_CallMethodObjArgs` is a faster alternative.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000266
Serhiy Storchaka1cfebc72013-05-29 18:50:54 +0300267 .. versionchanged:: 3.4
268 The types of *method* and *format* were changed from ``char *``.
269
Georg Brandl54a3faa2008-01-20 09:30:57 +0000270
Georg Brandl60203b42010-10-06 10:11:56 +0000271.. c:function:: PyObject* PyObject_CallFunctionObjArgs(PyObject *callable, ..., NULL)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000272
273 Call a callable Python object *callable*, with a variable number of
Georg Brandl60203b42010-10-06 10:11:56 +0000274 :c:type:`PyObject\*` arguments. The arguments are provided as a variable number
Georg Brandl54a3faa2008-01-20 09:30:57 +0000275 of parameters followed by *NULL*. Returns the result of the call on success, or
276 *NULL* on failure.
277
278
Georg Brandl60203b42010-10-06 10:11:56 +0000279.. c:function:: PyObject* PyObject_CallMethodObjArgs(PyObject *o, PyObject *name, ..., NULL)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000280
281 Calls a method of the object *o*, where the name of the method is given as a
282 Python string object in *name*. It is called with a variable number of
Georg Brandl60203b42010-10-06 10:11:56 +0000283 :c:type:`PyObject\*` arguments. The arguments are provided as a variable number
Georg Brandl54a3faa2008-01-20 09:30:57 +0000284 of parameters followed by *NULL*. Returns the result of the call on success, or
285 *NULL* on failure.
286
287
Benjamin Peterson8f67d082010-10-17 20:54:53 +0000288.. c:function:: Py_hash_t PyObject_Hash(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000289
290 .. index:: builtin: hash
291
292 Compute and return the hash value of an object *o*. On failure, return ``-1``.
293 This is the equivalent of the Python expression ``hash(o)``.
294
Benjamin Peterson8f67d082010-10-17 20:54:53 +0000295 .. versionchanged:: 3.2
Benjamin Peterson8f67d082010-10-17 20:54:53 +0000296 The return type is now Py_hash_t. This is a signed integer the same size
297 as Py_ssize_t.
298
299
300.. c:function:: Py_hash_t PyObject_HashNotImplemented(PyObject *o)
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000301
Benjamin Petersone5384b02008-10-04 22:00:42 +0000302 Set a :exc:`TypeError` indicating that ``type(o)`` is not hashable and return ``-1``.
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000303 This function receives special treatment when stored in a ``tp_hash`` slot,
Benjamin Petersonc4fe6f32008-08-19 18:57:56 +0000304 allowing a type to explicitly indicate to the interpreter that it is not
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000305 hashable.
306
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000307
Georg Brandl60203b42010-10-06 10:11:56 +0000308.. c:function:: int PyObject_IsTrue(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000309
310 Returns ``1`` if the object *o* is considered to be true, and ``0`` otherwise.
311 This is equivalent to the Python expression ``not not o``. On failure, return
312 ``-1``.
313
314
Georg Brandl60203b42010-10-06 10:11:56 +0000315.. c:function:: int PyObject_Not(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000316
317 Returns ``0`` if the object *o* is considered to be true, and ``1`` otherwise.
318 This is equivalent to the Python expression ``not o``. On failure, return
319 ``-1``.
320
321
Georg Brandl60203b42010-10-06 10:11:56 +0000322.. c:function:: PyObject* PyObject_Type(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000323
324 .. index:: builtin: type
325
326 When *o* is non-*NULL*, returns a type object corresponding to the object type
327 of object *o*. On failure, raises :exc:`SystemError` and returns *NULL*. This
328 is equivalent to the Python expression ``type(o)``. This function increments the
329 reference count of the return value. There's really no reason to use this
330 function instead of the common expression ``o->ob_type``, which returns a
Georg Brandl60203b42010-10-06 10:11:56 +0000331 pointer of type :c:type:`PyTypeObject\*`, except when the incremented reference
Georg Brandl54a3faa2008-01-20 09:30:57 +0000332 count is needed.
333
334
Georg Brandl60203b42010-10-06 10:11:56 +0000335.. c:function:: int PyObject_TypeCheck(PyObject *o, PyTypeObject *type)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000336
337 Return true if the object *o* is of type *type* or a subtype of *type*. Both
338 parameters must be non-*NULL*.
339
340
Georg Brandl60203b42010-10-06 10:11:56 +0000341.. c:function:: Py_ssize_t PyObject_Length(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000342 Py_ssize_t PyObject_Size(PyObject *o)
343
344 .. index:: builtin: len
345
346 Return the length of object *o*. If the object *o* provides either the sequence
347 and mapping protocols, the sequence length is returned. On error, ``-1`` is
348 returned. This is the equivalent to the Python expression ``len(o)``.
349
Georg Brandl54a3faa2008-01-20 09:30:57 +0000350
Armin Ronacheraa9a79d2012-10-06 14:03:24 +0200351.. c:function:: Py_ssize_t PyObject_LengthHint(PyObject *o, Py_ssize_t default)
352
353 Return an estimated length for the object *o*. First trying to return its
354 actual length, then an estimate using ``__length_hint__``, and finally
355 returning the default value. On error ``-1`` is returned. This is the
356 equivalent to the Python expression ``operator.length_hint(o, default)``.
357
Armin Ronacher74b38b12012-10-07 10:29:32 +0200358 .. versionadded:: 3.4
359
Georg Brandl60203b42010-10-06 10:11:56 +0000360.. c:function:: PyObject* PyObject_GetItem(PyObject *o, PyObject *key)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000361
362 Return element of *o* corresponding to the object *key* or *NULL* on failure.
363 This is the equivalent of the Python expression ``o[key]``.
364
365
Georg Brandl60203b42010-10-06 10:11:56 +0000366.. c:function:: int PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000367
368 Map the object *key* to the value *v*. Returns ``-1`` on failure. This is the
369 equivalent of the Python statement ``o[key] = v``.
370
371
Georg Brandl60203b42010-10-06 10:11:56 +0000372.. c:function:: int PyObject_DelItem(PyObject *o, PyObject *key)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000373
374 Delete the mapping for *key* from *o*. Returns ``-1`` on failure. This is the
375 equivalent of the Python statement ``del o[key]``.
376
377
Georg Brandl60203b42010-10-06 10:11:56 +0000378.. c:function:: PyObject* PyObject_Dir(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000379
380 This is equivalent to the Python expression ``dir(o)``, returning a (possibly
381 empty) list of strings appropriate for the object argument, or *NULL* if there
382 was an error. If the argument is *NULL*, this is like the Python ``dir()``,
383 returning the names of the current locals; in this case, if no execution frame
Georg Brandl60203b42010-10-06 10:11:56 +0000384 is active then *NULL* is returned but :c:func:`PyErr_Occurred` will return false.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000385
386
Georg Brandl60203b42010-10-06 10:11:56 +0000387.. c:function:: PyObject* PyObject_GetIter(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000388
389 This is equivalent to the Python expression ``iter(o)``. It returns a new
390 iterator for the object argument, or the object itself if the object is already
391 an iterator. Raises :exc:`TypeError` and returns *NULL* if the object cannot be
392 iterated.