blob: 0aba360592c840e50a34323136176815b0301da2 [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
Serhiy Storchaka0b68a2d2013-10-09 13:26:17 +030063 :attr:`~object.__dict__` (if present). As outlined in :ref:`descriptors`,
64 data descriptors take preference over instance attributes, while non-data
Benjamin Petersond23f8222009-04-05 19:13:16 +000065 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
Serhiy Storchaka0b68a2d2013-10-09 13:26:17 +030088 attribute is set in the object's :attr:`~object.__dict__` (if present).
89 Otherwise, an :exc:`AttributeError` is raised and ``-1`` is returned.
Benjamin Petersond23f8222009-04-05 19:13:16 +000090
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
Serhiy Storchaka0b68a2d2013-10-09 13:26:17 +0300192 tuple, *inst* must have a :attr:`~instance.__class__` attribute --- the
193 class relationship of the value of that attribute with *cls* will be used
194 to determine the result of this function.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000195
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*
Serhiy Storchaka0b68a2d2013-10-09 13:26:17 +0300204are different objects, *B*'s :attr:`~class.__bases__` attribute is searched in
205a depth-first fashion for *A* --- the presence of the :attr:`~class.__bases__`
206attribute is considered sufficient for this determination.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000207
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
Georg Brandl60203b42010-10-06 10:11:56 +0000243.. c:function:: PyObject* PyObject_CallFunction(PyObject *callable, 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
253
Georg Brandl60203b42010-10-06 10:11:56 +0000254.. c:function:: PyObject* PyObject_CallMethod(PyObject *o, char *method, char *format, ...)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000255
256 Call the method named *method* of object *o* with a variable number of C
Georg Brandl60203b42010-10-06 10:11:56 +0000257 arguments. The C arguments are described by a :c:func:`Py_BuildValue` format
Georg Brandl54a3faa2008-01-20 09:30:57 +0000258 string that should produce a tuple. The format may be *NULL*, indicating that
259 no arguments are provided. Returns the result of the call on success, or *NULL*
260 on failure. This is the equivalent of the Python expression ``o.method(args)``.
Georg Brandl60203b42010-10-06 10:11:56 +0000261 Note that if you only pass :c:type:`PyObject \*` args,
262 :c:func:`PyObject_CallMethodObjArgs` is a faster alternative.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000263
264
Georg Brandl60203b42010-10-06 10:11:56 +0000265.. c:function:: PyObject* PyObject_CallFunctionObjArgs(PyObject *callable, ..., NULL)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000266
267 Call a callable Python object *callable*, with a variable number of
Georg Brandl60203b42010-10-06 10:11:56 +0000268 :c:type:`PyObject\*` arguments. The arguments are provided as a variable number
Georg Brandl54a3faa2008-01-20 09:30:57 +0000269 of parameters followed by *NULL*. Returns the result of the call on success, or
270 *NULL* on failure.
271
272
Georg Brandl60203b42010-10-06 10:11:56 +0000273.. c:function:: PyObject* PyObject_CallMethodObjArgs(PyObject *o, PyObject *name, ..., NULL)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000274
275 Calls a method of the object *o*, where the name of the method is given as a
276 Python string object in *name*. It is called with a variable number of
Georg Brandl60203b42010-10-06 10:11:56 +0000277 :c:type:`PyObject\*` arguments. The arguments are provided as a variable number
Georg Brandl54a3faa2008-01-20 09:30:57 +0000278 of parameters followed by *NULL*. Returns the result of the call on success, or
279 *NULL* on failure.
280
281
Benjamin Peterson8f67d082010-10-17 20:54:53 +0000282.. c:function:: Py_hash_t PyObject_Hash(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000283
284 .. index:: builtin: hash
285
286 Compute and return the hash value of an object *o*. On failure, return ``-1``.
287 This is the equivalent of the Python expression ``hash(o)``.
288
Benjamin Peterson8f67d082010-10-17 20:54:53 +0000289 .. versionchanged:: 3.2
Benjamin Peterson8f67d082010-10-17 20:54:53 +0000290 The return type is now Py_hash_t. This is a signed integer the same size
291 as Py_ssize_t.
292
293
294.. c:function:: Py_hash_t PyObject_HashNotImplemented(PyObject *o)
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000295
Benjamin Petersone5384b02008-10-04 22:00:42 +0000296 Set a :exc:`TypeError` indicating that ``type(o)`` is not hashable and return ``-1``.
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000297 This function receives special treatment when stored in a ``tp_hash`` slot,
Benjamin Petersonc4fe6f32008-08-19 18:57:56 +0000298 allowing a type to explicitly indicate to the interpreter that it is not
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000299 hashable.
300
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000301
Georg Brandl60203b42010-10-06 10:11:56 +0000302.. c:function:: int PyObject_IsTrue(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000303
304 Returns ``1`` if the object *o* is considered to be true, and ``0`` otherwise.
305 This is equivalent to the Python expression ``not not o``. On failure, return
306 ``-1``.
307
308
Georg Brandl60203b42010-10-06 10:11:56 +0000309.. c:function:: int PyObject_Not(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000310
311 Returns ``0`` if the object *o* is considered to be true, and ``1`` otherwise.
312 This is equivalent to the Python expression ``not o``. On failure, return
313 ``-1``.
314
315
Georg Brandl60203b42010-10-06 10:11:56 +0000316.. c:function:: PyObject* PyObject_Type(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000317
318 .. index:: builtin: type
319
320 When *o* is non-*NULL*, returns a type object corresponding to the object type
321 of object *o*. On failure, raises :exc:`SystemError` and returns *NULL*. This
322 is equivalent to the Python expression ``type(o)``. This function increments the
323 reference count of the return value. There's really no reason to use this
324 function instead of the common expression ``o->ob_type``, which returns a
Georg Brandl60203b42010-10-06 10:11:56 +0000325 pointer of type :c:type:`PyTypeObject\*`, except when the incremented reference
Georg Brandl54a3faa2008-01-20 09:30:57 +0000326 count is needed.
327
328
Georg Brandl60203b42010-10-06 10:11:56 +0000329.. c:function:: int PyObject_TypeCheck(PyObject *o, PyTypeObject *type)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000330
331 Return true if the object *o* is of type *type* or a subtype of *type*. Both
332 parameters must be non-*NULL*.
333
334
Georg Brandl60203b42010-10-06 10:11:56 +0000335.. c:function:: Py_ssize_t PyObject_Length(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000336 Py_ssize_t PyObject_Size(PyObject *o)
337
338 .. index:: builtin: len
339
340 Return the length of object *o*. If the object *o* provides either the sequence
341 and mapping protocols, the sequence length is returned. On error, ``-1`` is
342 returned. This is the equivalent to the Python expression ``len(o)``.
343
Georg Brandl54a3faa2008-01-20 09:30:57 +0000344
Georg Brandl60203b42010-10-06 10:11:56 +0000345.. c:function:: PyObject* PyObject_GetItem(PyObject *o, PyObject *key)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000346
347 Return element of *o* corresponding to the object *key* or *NULL* on failure.
348 This is the equivalent of the Python expression ``o[key]``.
349
350
Georg Brandl60203b42010-10-06 10:11:56 +0000351.. c:function:: int PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000352
353 Map the object *key* to the value *v*. Returns ``-1`` on failure. This is the
354 equivalent of the Python statement ``o[key] = v``.
355
356
Georg Brandl60203b42010-10-06 10:11:56 +0000357.. c:function:: int PyObject_DelItem(PyObject *o, PyObject *key)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000358
359 Delete the mapping for *key* from *o*. Returns ``-1`` on failure. This is the
360 equivalent of the Python statement ``del o[key]``.
361
362
Georg Brandl60203b42010-10-06 10:11:56 +0000363.. c:function:: PyObject* PyObject_Dir(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000364
365 This is equivalent to the Python expression ``dir(o)``, returning a (possibly
366 empty) list of strings appropriate for the object argument, or *NULL* if there
367 was an error. If the argument is *NULL*, this is like the Python ``dir()``,
368 returning the names of the current locals; in this case, if no execution frame
Georg Brandl60203b42010-10-06 10:11:56 +0000369 is active then *NULL* is returned but :c:func:`PyErr_Occurred` will return false.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000370
371
Georg Brandl60203b42010-10-06 10:11:56 +0000372.. c:function:: PyObject* PyObject_GetIter(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000373
374 This is equivalent to the Python expression ``iter(o)``. It returns a new
375 iterator for the object argument, or the object itself if the object is already
376 an iterator. Raises :exc:`TypeError` and returns *NULL* if the object cannot be
377 iterated.