blob: 2905fbbd0f70c3f97bedb060e3fdfe9620ca1b42 [file] [log] [blame]
Stéphane Wirtelcbb64842019-05-17 11:55:34 +02001.. highlight:: c
Georg Brandl54a3faa2008-01-20 09:30:57 +00002
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
Serhiy Storchaka3fcc1e02018-12-18 13:57:17 +020036 Note that exceptions which occur while calling :meth:`__getattr__` and
37 :meth:`__getattribute__` methods will get suppressed.
38 To get error reporting use :c:func:`PyObject_GetAttr()` instead.
39
Georg Brandl54a3faa2008-01-20 09:30:57 +000040
Georg Brandl60203b42010-10-06 10:11:56 +000041.. c:function:: int PyObject_HasAttrString(PyObject *o, const char *attr_name)
Georg Brandl54a3faa2008-01-20 09:30:57 +000042
43 Returns ``1`` if *o* has the attribute *attr_name*, and ``0`` otherwise. This
44 is equivalent to the Python expression ``hasattr(o, attr_name)``. This function
45 always succeeds.
46
Serhiy Storchaka3fcc1e02018-12-18 13:57:17 +020047 Note that exceptions which occur while calling :meth:`__getattr__` and
48 :meth:`__getattribute__` methods and creating a temporary string object
49 will get suppressed.
50 To get error reporting use :c:func:`PyObject_GetAttrString()` instead.
51
Georg Brandl54a3faa2008-01-20 09:30:57 +000052
Georg Brandl60203b42010-10-06 10:11:56 +000053.. c:function:: PyObject* PyObject_GetAttr(PyObject *o, PyObject *attr_name)
Georg Brandl54a3faa2008-01-20 09:30:57 +000054
55 Retrieve an attribute named *attr_name* from object *o*. Returns the attribute
Serhiy Storchaka25fc0882019-10-30 12:03:20 +020056 value on success, or ``NULL`` on failure. This is the equivalent of the Python
Georg Brandl54a3faa2008-01-20 09:30:57 +000057 expression ``o.attr_name``.
58
59
Georg Brandl60203b42010-10-06 10:11:56 +000060.. c:function:: PyObject* PyObject_GetAttrString(PyObject *o, const char *attr_name)
Georg Brandl54a3faa2008-01-20 09:30:57 +000061
62 Retrieve an attribute named *attr_name* from object *o*. Returns the attribute
Serhiy Storchaka25fc0882019-10-30 12:03:20 +020063 value on success, or ``NULL`` on failure. This is the equivalent of the Python
Georg Brandl54a3faa2008-01-20 09:30:57 +000064 expression ``o.attr_name``.
65
66
Georg Brandl60203b42010-10-06 10:11:56 +000067.. c:function:: PyObject* PyObject_GenericGetAttr(PyObject *o, PyObject *name)
Benjamin Petersond23f8222009-04-05 19:13:16 +000068
69 Generic attribute getter function that is meant to be put into a type
70 object's ``tp_getattro`` slot. It looks for a descriptor in the dictionary
71 of classes in the object's MRO as well as an attribute in the object's
Serhiy Storchaka0b68a2d2013-10-09 13:26:17 +030072 :attr:`~object.__dict__` (if present). As outlined in :ref:`descriptors`,
73 data descriptors take preference over instance attributes, while non-data
Benjamin Petersond23f8222009-04-05 19:13:16 +000074 descriptors don't. Otherwise, an :exc:`AttributeError` is raised.
75
76
Georg Brandl60203b42010-10-06 10:11:56 +000077.. c:function:: int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v)
Georg Brandl54a3faa2008-01-20 09:30:57 +000078
79 Set the value of the attribute named *attr_name*, for object *o*, to the value
Martin Panter45be8d62015-12-08 00:03:20 +000080 *v*. Raise an exception and return ``-1`` on failure;
81 return ``0`` on success. This is the equivalent of the Python statement
Georg Brandl54a3faa2008-01-20 09:30:57 +000082 ``o.attr_name = v``.
83
Serhiy Storchaka25fc0882019-10-30 12:03:20 +020084 If *v* is ``NULL``, the attribute is deleted, however this feature is
Martin Panter45be8d62015-12-08 00:03:20 +000085 deprecated in favour of using :c:func:`PyObject_DelAttr`.
86
Georg Brandl54a3faa2008-01-20 09:30:57 +000087
Georg Brandl60203b42010-10-06 10:11:56 +000088.. c:function:: int PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v)
Georg Brandl54a3faa2008-01-20 09:30:57 +000089
90 Set the value of the attribute named *attr_name*, for object *o*, to the value
Martin Panter45be8d62015-12-08 00:03:20 +000091 *v*. Raise an exception and return ``-1`` on failure;
92 return ``0`` on success. This is the equivalent of the Python statement
Georg Brandl54a3faa2008-01-20 09:30:57 +000093 ``o.attr_name = v``.
94
Serhiy Storchaka25fc0882019-10-30 12:03:20 +020095 If *v* is ``NULL``, the attribute is deleted, however this feature is
Martin Panter45be8d62015-12-08 00:03:20 +000096 deprecated in favour of using :c:func:`PyObject_DelAttrString`.
97
Georg Brandl54a3faa2008-01-20 09:30:57 +000098
Georg Brandl60203b42010-10-06 10:11:56 +000099.. c:function:: int PyObject_GenericSetAttr(PyObject *o, PyObject *name, PyObject *value)
Benjamin Petersond23f8222009-04-05 19:13:16 +0000100
Martin Panter45be8d62015-12-08 00:03:20 +0000101 Generic attribute setter and deleter function that is meant
102 to be put into a type object's :c:member:`~PyTypeObject.tp_setattro`
103 slot. It looks for a data descriptor in the
Benjamin Petersond23f8222009-04-05 19:13:16 +0000104 dictionary of classes in the object's MRO, and if found it takes preference
Martin Panter45be8d62015-12-08 00:03:20 +0000105 over setting or deleting the attribute in the instance dictionary. Otherwise, the
106 attribute is set or deleted in the object's :attr:`~object.__dict__` (if present).
107 On success, ``0`` is returned, otherwise an :exc:`AttributeError`
108 is raised and ``-1`` is returned.
Benjamin Petersond23f8222009-04-05 19:13:16 +0000109
110
Georg Brandl60203b42010-10-06 10:11:56 +0000111.. c:function:: int PyObject_DelAttr(PyObject *o, PyObject *attr_name)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000112
113 Delete attribute named *attr_name*, for object *o*. Returns ``-1`` on failure.
114 This is the equivalent of the Python statement ``del o.attr_name``.
115
116
Georg Brandl60203b42010-10-06 10:11:56 +0000117.. c:function:: int PyObject_DelAttrString(PyObject *o, const char *attr_name)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000118
119 Delete attribute named *attr_name*, for object *o*. Returns ``-1`` on failure.
120 This is the equivalent of the Python statement ``del o.attr_name``.
121
122
Benjamin Peterson1c262a62014-10-05 21:20:36 -0400123.. c:function:: PyObject* PyObject_GenericGetDict(PyObject *o, void *context)
Benjamin Peterson8eb12692012-02-19 19:59:10 -0500124
125 A generic implementation for the getter of a ``__dict__`` descriptor. It
126 creates the dictionary if necessary.
127
Benjamin Peterson43844352012-02-20 08:48:25 -0500128 .. versionadded:: 3.3
129
Benjamin Peterson8eb12692012-02-19 19:59:10 -0500130
Benjamin Peterson1c262a62014-10-05 21:20:36 -0400131.. c:function:: int PyObject_GenericSetDict(PyObject *o, void *context)
Benjamin Peterson8eb12692012-02-19 19:59:10 -0500132
133 A generic implementation for the setter of a ``__dict__`` descriptor. This
134 implementation does not allow the dictionary to be deleted.
135
Benjamin Peterson43844352012-02-20 08:48:25 -0500136 .. versionadded:: 3.3
137
Benjamin Peterson8eb12692012-02-19 19:59:10 -0500138
Georg Brandl60203b42010-10-06 10:11:56 +0000139.. c:function:: PyObject* PyObject_RichCompare(PyObject *o1, PyObject *o2, int opid)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000140
141 Compare the values of *o1* and *o2* using the operation specified by *opid*,
142 which must be one of :const:`Py_LT`, :const:`Py_LE`, :const:`Py_EQ`,
143 :const:`Py_NE`, :const:`Py_GT`, or :const:`Py_GE`, corresponding to ``<``,
144 ``<=``, ``==``, ``!=``, ``>``, or ``>=`` respectively. This is the equivalent of
145 the Python expression ``o1 op o2``, where ``op`` is the operator corresponding
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200146 to *opid*. Returns the value of the comparison on success, or ``NULL`` on failure.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000147
148
Georg Brandl60203b42010-10-06 10:11:56 +0000149.. c:function:: int PyObject_RichCompareBool(PyObject *o1, PyObject *o2, int opid)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000150
151 Compare the values of *o1* and *o2* using the operation specified by *opid*,
152 which must be one of :const:`Py_LT`, :const:`Py_LE`, :const:`Py_EQ`,
153 :const:`Py_NE`, :const:`Py_GT`, or :const:`Py_GE`, corresponding to ``<``,
154 ``<=``, ``==``, ``!=``, ``>``, or ``>=`` respectively. Returns ``-1`` on error,
155 ``0`` if the result is false, ``1`` otherwise. This is the equivalent of the
156 Python expression ``o1 op o2``, where ``op`` is the operator corresponding to
157 *opid*.
158
Eli Benderskyad30c422011-01-15 10:23:34 +0000159.. note::
160 If *o1* and *o2* are the same object, :c:func:`PyObject_RichCompareBool`
161 will always return ``1`` for :const:`Py_EQ` and ``0`` for :const:`Py_NE`.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000162
Georg Brandl60203b42010-10-06 10:11:56 +0000163.. c:function:: PyObject* PyObject_Repr(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000164
165 .. index:: builtin: repr
166
167 Compute a string representation of object *o*. Returns the string
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200168 representation on success, ``NULL`` on failure. This is the equivalent of the
Georg Brandl559e5d72008-06-11 18:37:52 +0000169 Python expression ``repr(o)``. Called by the :func:`repr` built-in function.
170
Nick Coghlanc0bc0b42014-02-09 12:00:01 +1000171 .. versionchanged:: 3.4
172 This function now includes a debug assertion to help ensure that it
173 does not silently discard an active exception.
Georg Brandl559e5d72008-06-11 18:37:52 +0000174
Georg Brandl60203b42010-10-06 10:11:56 +0000175.. c:function:: PyObject* PyObject_ASCII(PyObject *o)
Georg Brandl559e5d72008-06-11 18:37:52 +0000176
177 .. index:: builtin: ascii
178
Georg Brandl60203b42010-10-06 10:11:56 +0000179 As :c:func:`PyObject_Repr`, compute a string representation of object *o*, but
Georg Brandl559e5d72008-06-11 18:37:52 +0000180 escape the non-ASCII characters in the string returned by
Georg Brandl60203b42010-10-06 10:11:56 +0000181 :c:func:`PyObject_Repr` with ``\x``, ``\u`` or ``\U`` escapes. This generates
182 a string similar to that returned by :c:func:`PyObject_Repr` in Python 2.
Georg Brandl559e5d72008-06-11 18:37:52 +0000183 Called by the :func:`ascii` built-in function.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000184
Chris Jerdonekbb4e9412012-11-28 01:38:40 -0800185 .. index:: string; PyObject_Str (C function)
186
Georg Brandl54a3faa2008-01-20 09:30:57 +0000187
Georg Brandl60203b42010-10-06 10:11:56 +0000188.. c:function:: PyObject* PyObject_Str(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000189
Georg Brandl54a3faa2008-01-20 09:30:57 +0000190 Compute a string representation of object *o*. Returns the string
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200191 representation on success, ``NULL`` on failure. This is the equivalent of the
Georg Brandl54a3faa2008-01-20 09:30:57 +0000192 Python expression ``str(o)``. Called by the :func:`str` built-in function
193 and, therefore, by the :func:`print` function.
194
Nick Coghlan3d7b3642014-02-09 10:57:34 +1000195 .. versionchanged:: 3.4
Nick Coghlanc0bc0b42014-02-09 12:00:01 +1000196 This function now includes a debug assertion to help ensure that it
197 does not silently discard an active exception.
Nick Coghlan3d7b3642014-02-09 10:57:34 +1000198
Jeroen Demeyerbf17d412019-11-05 16:48:04 +0100199
Georg Brandl60203b42010-10-06 10:11:56 +0000200.. c:function:: PyObject* PyObject_Bytes(PyObject *o)
Benjamin Petersonc15a0732008-08-26 16:46:47 +0000201
202 .. index:: builtin: bytes
203
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200204 Compute a bytes representation of object *o*. ``NULL`` is returned on
Alexandre Vassalottieb6f8de2009-12-31 03:56:09 +0000205 failure and a bytes object on success. This is equivalent to the Python
206 expression ``bytes(o)``, when *o* is not an integer. Unlike ``bytes(o)``,
207 a TypeError is raised when *o* is an integer instead of a zero-initialized
208 bytes object.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000209
Georg Brandl54a3faa2008-01-20 09:30:57 +0000210
Georg Brandl60203b42010-10-06 10:11:56 +0000211.. c:function:: int PyObject_IsSubclass(PyObject *derived, PyObject *cls)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000212
Georg Brandlf6d6dc22014-10-06 14:38:53 +0200213 Return ``1`` if the class *derived* is identical to or derived from the class
214 *cls*, otherwise return ``0``. In case of an error, return ``-1``.
215
216 If *cls* is a tuple, the check will be done against every entry in *cls*.
217 The result will be ``1`` when at least one of the checks returns ``1``,
218 otherwise it will be ``0``.
219
220 If *cls* has a :meth:`~class.__subclasscheck__` method, it will be called to
221 determine the subclass status as described in :pep:`3119`. Otherwise,
222 *derived* is a subclass of *cls* if it is a direct or indirect subclass,
223 i.e. contained in ``cls.__mro__``.
224
225 Normally only class objects, i.e. instances of :class:`type` or a derived
Serhiy Storchakaa7db0572015-05-02 19:24:41 +0300226 class, are considered classes. However, objects can override this by having
Georg Brandlf6d6dc22014-10-06 14:38:53 +0200227 a :attr:`__bases__` attribute (which must be a tuple of base classes).
228
229
230.. c:function:: int PyObject_IsInstance(PyObject *inst, PyObject *cls)
231
232 Return ``1`` if *inst* is an instance of the class *cls* or a subclass of
233 *cls*, or ``0`` if not. On error, returns ``-1`` and sets an exception.
234
235 If *cls* is a tuple, the check will be done against every entry in *cls*.
236 The result will be ``1`` when at least one of the checks returns ``1``,
237 otherwise it will be ``0``.
238
239 If *cls* has a :meth:`~class.__instancecheck__` method, it will be called to
240 determine the subclass status as described in :pep:`3119`. Otherwise, *inst*
241 is an instance of *cls* if its class is a subclass of *cls*.
242
243 An instance *inst* can override what is considered its class by having a
244 :attr:`__class__` attribute.
245
246 An object *cls* can override if it is considered a class, and what its base
247 classes are, by having a :attr:`__bases__` attribute (which must be a tuple
248 of base classes).
Georg Brandl54a3faa2008-01-20 09:30:57 +0000249
250
Benjamin Peterson8f67d082010-10-17 20:54:53 +0000251.. c:function:: Py_hash_t PyObject_Hash(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000252
253 .. index:: builtin: hash
254
255 Compute and return the hash value of an object *o*. On failure, return ``-1``.
256 This is the equivalent of the Python expression ``hash(o)``.
257
Benjamin Peterson8f67d082010-10-17 20:54:53 +0000258 .. versionchanged:: 3.2
Benjamin Peterson8f67d082010-10-17 20:54:53 +0000259 The return type is now Py_hash_t. This is a signed integer the same size
260 as Py_ssize_t.
261
262
263.. c:function:: Py_hash_t PyObject_HashNotImplemented(PyObject *o)
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000264
Benjamin Petersone5384b02008-10-04 22:00:42 +0000265 Set a :exc:`TypeError` indicating that ``type(o)`` is not hashable and return ``-1``.
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000266 This function receives special treatment when stored in a ``tp_hash`` slot,
Benjamin Petersonc4fe6f32008-08-19 18:57:56 +0000267 allowing a type to explicitly indicate to the interpreter that it is not
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000268 hashable.
269
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000270
Georg Brandl60203b42010-10-06 10:11:56 +0000271.. c:function:: int PyObject_IsTrue(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000272
273 Returns ``1`` if the object *o* is considered to be true, and ``0`` otherwise.
274 This is equivalent to the Python expression ``not not o``. On failure, return
275 ``-1``.
276
277
Georg Brandl60203b42010-10-06 10:11:56 +0000278.. c:function:: int PyObject_Not(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000279
280 Returns ``0`` if the object *o* is considered to be true, and ``1`` otherwise.
281 This is equivalent to the Python expression ``not o``. On failure, return
282 ``-1``.
283
284
Georg Brandl60203b42010-10-06 10:11:56 +0000285.. c:function:: PyObject* PyObject_Type(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000286
287 .. index:: builtin: type
288
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200289 When *o* is non-``NULL``, returns a type object corresponding to the object type
290 of object *o*. On failure, raises :exc:`SystemError` and returns ``NULL``. This
Georg Brandl54a3faa2008-01-20 09:30:57 +0000291 is equivalent to the Python expression ``type(o)``. This function increments the
292 reference count of the return value. There's really no reason to use this
293 function instead of the common expression ``o->ob_type``, which returns a
Georg Brandl60203b42010-10-06 10:11:56 +0000294 pointer of type :c:type:`PyTypeObject\*`, except when the incremented reference
Georg Brandl54a3faa2008-01-20 09:30:57 +0000295 count is needed.
296
297
Georg Brandl60203b42010-10-06 10:11:56 +0000298.. c:function:: int PyObject_TypeCheck(PyObject *o, PyTypeObject *type)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000299
300 Return true if the object *o* is of type *type* or a subtype of *type*. Both
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200301 parameters must be non-``NULL``.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000302
303
Serhiy Storchakaf5b11832018-05-22 11:02:44 +0300304.. c:function:: Py_ssize_t PyObject_Size(PyObject *o)
305 Py_ssize_t PyObject_Length(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000306
307 .. index:: builtin: len
308
309 Return the length of object *o*. If the object *o* provides either the sequence
310 and mapping protocols, the sequence length is returned. On error, ``-1`` is
311 returned. This is the equivalent to the Python expression ``len(o)``.
312
Georg Brandl54a3faa2008-01-20 09:30:57 +0000313
Armin Ronacheraa9a79d2012-10-06 14:03:24 +0200314.. c:function:: Py_ssize_t PyObject_LengthHint(PyObject *o, Py_ssize_t default)
315
Larry Hastings3732ed22014-03-15 21:13:56 -0700316 Return an estimated length for the object *o*. First try to return its
317 actual length, then an estimate using :meth:`~object.__length_hint__`, and
318 finally return the default value. On error return ``-1``. This is the
Armin Ronacheraa9a79d2012-10-06 14:03:24 +0200319 equivalent to the Python expression ``operator.length_hint(o, default)``.
320
Armin Ronacher74b38b12012-10-07 10:29:32 +0200321 .. versionadded:: 3.4
322
Georg Brandldf48b972014-03-24 09:06:18 +0100323
Georg Brandl60203b42010-10-06 10:11:56 +0000324.. c:function:: PyObject* PyObject_GetItem(PyObject *o, PyObject *key)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000325
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200326 Return element of *o* corresponding to the object *key* or ``NULL`` on failure.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000327 This is the equivalent of the Python expression ``o[key]``.
328
329
Georg Brandl60203b42010-10-06 10:11:56 +0000330.. c:function:: int PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000331
Martin Panter45be8d62015-12-08 00:03:20 +0000332 Map the object *key* to the value *v*. Raise an exception and
333 return ``-1`` on failure; return ``0`` on success. This is the
Joannah Nanjekyee1e80002020-01-29 07:20:53 -0400334 equivalent of the Python statement ``o[key] = v``. This function *does
335 not* steal a reference to *v*.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000336
337
Georg Brandl60203b42010-10-06 10:11:56 +0000338.. c:function:: int PyObject_DelItem(PyObject *o, PyObject *key)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000339
Serhiy Storchakaf5b11832018-05-22 11:02:44 +0300340 Remove the mapping for the object *key* from the object *o*. Return ``-1``
341 on failure. This is equivalent to the Python statement ``del o[key]``.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000342
343
Georg Brandl60203b42010-10-06 10:11:56 +0000344.. c:function:: PyObject* PyObject_Dir(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000345
346 This is equivalent to the Python expression ``dir(o)``, returning a (possibly
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200347 empty) list of strings appropriate for the object argument, or ``NULL`` if there
348 was an error. If the argument is ``NULL``, this is like the Python ``dir()``,
Georg Brandl54a3faa2008-01-20 09:30:57 +0000349 returning the names of the current locals; in this case, if no execution frame
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200350 is active then ``NULL`` is returned but :c:func:`PyErr_Occurred` will return false.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000351
352
Georg Brandl60203b42010-10-06 10:11:56 +0000353.. c:function:: PyObject* PyObject_GetIter(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000354
355 This is equivalent to the Python expression ``iter(o)``. It returns a new
356 iterator for the object argument, or the object itself if the object is already
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200357 an iterator. Raises :exc:`TypeError` and returns ``NULL`` if the object cannot be
Georg Brandl54a3faa2008-01-20 09:30:57 +0000358 iterated.