blob: ad84301f8f32844a1e6534ca4e233a59acf6183c [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
Nick Coghlanc0bc0b42014-02-09 12:00:01 +1000152 .. versionchanged:: 3.4
153 This function now includes a debug assertion to help ensure that it
154 does not silently discard an active exception.
Georg Brandl559e5d72008-06-11 18:37:52 +0000155
Georg Brandl60203b42010-10-06 10:11:56 +0000156.. c:function:: PyObject* PyObject_ASCII(PyObject *o)
Georg Brandl559e5d72008-06-11 18:37:52 +0000157
158 .. index:: builtin: ascii
159
Georg Brandl60203b42010-10-06 10:11:56 +0000160 As :c:func:`PyObject_Repr`, compute a string representation of object *o*, but
Georg Brandl559e5d72008-06-11 18:37:52 +0000161 escape the non-ASCII characters in the string returned by
Georg Brandl60203b42010-10-06 10:11:56 +0000162 :c:func:`PyObject_Repr` with ``\x``, ``\u`` or ``\U`` escapes. This generates
163 a string similar to that returned by :c:func:`PyObject_Repr` in Python 2.
Georg Brandl559e5d72008-06-11 18:37:52 +0000164 Called by the :func:`ascii` built-in function.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000165
Chris Jerdonekbb4e9412012-11-28 01:38:40 -0800166 .. index:: string; PyObject_Str (C function)
167
Georg Brandl54a3faa2008-01-20 09:30:57 +0000168
Georg Brandl60203b42010-10-06 10:11:56 +0000169.. c:function:: PyObject* PyObject_Str(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000170
Georg Brandl54a3faa2008-01-20 09:30:57 +0000171 Compute a string representation of object *o*. Returns the string
172 representation on success, *NULL* on failure. This is the equivalent of the
173 Python expression ``str(o)``. Called by the :func:`str` built-in function
174 and, therefore, by the :func:`print` function.
175
Nick Coghlan3d7b3642014-02-09 10:57:34 +1000176 .. versionchanged:: 3.4
Nick Coghlanc0bc0b42014-02-09 12:00:01 +1000177 This function now includes a debug assertion to help ensure that it
178 does not silently discard an active exception.
Nick Coghlan3d7b3642014-02-09 10:57:34 +1000179
Georg Brandl60203b42010-10-06 10:11:56 +0000180.. c:function:: PyObject* PyObject_Bytes(PyObject *o)
Benjamin Petersonc15a0732008-08-26 16:46:47 +0000181
182 .. index:: builtin: bytes
183
Alexandre Vassalottieb6f8de2009-12-31 03:56:09 +0000184 Compute a bytes representation of object *o*. *NULL* is returned on
185 failure and a bytes object on success. This is equivalent to the Python
186 expression ``bytes(o)``, when *o* is not an integer. Unlike ``bytes(o)``,
187 a TypeError is raised when *o* is an integer instead of a zero-initialized
188 bytes object.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000189
Georg Brandl60203b42010-10-06 10:11:56 +0000190.. c:function:: int PyObject_IsInstance(PyObject *inst, PyObject *cls)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000191
192 Returns ``1`` if *inst* is an instance of the class *cls* or a subclass of
193 *cls*, or ``0`` if not. On error, returns ``-1`` and sets an exception. If
Georg Brandl60203b42010-10-06 10:11:56 +0000194 *cls* is a type object rather than a class object, :c:func:`PyObject_IsInstance`
Georg Brandl54a3faa2008-01-20 09:30:57 +0000195 returns ``1`` if *inst* is of type *cls*. If *cls* is a tuple, the check will
196 be done against every entry in *cls*. The result will be ``1`` when at least one
197 of the checks returns ``1``, otherwise it will be ``0``. If *inst* is not a
198 class instance and *cls* is neither a type object, nor a class object, nor a
Serhiy Storchaka0b68a2d2013-10-09 13:26:17 +0300199 tuple, *inst* must have a :attr:`~instance.__class__` attribute --- the
200 class relationship of the value of that attribute with *cls* will be used
201 to determine the result of this function.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000202
203
204Subclass determination is done in a fairly straightforward way, but includes a
205wrinkle that implementors of extensions to the class system may want to be aware
206of. If :class:`A` and :class:`B` are class objects, :class:`B` is a subclass of
207:class:`A` if it inherits from :class:`A` either directly or indirectly. If
208either is not a class object, a more general mechanism is used to determine the
209class relationship of the two objects. When testing if *B* is a subclass of
Georg Brandl60203b42010-10-06 10:11:56 +0000210*A*, if *A* is *B*, :c:func:`PyObject_IsSubclass` returns true. If *A* and *B*
Serhiy Storchaka0b68a2d2013-10-09 13:26:17 +0300211are different objects, *B*'s :attr:`~class.__bases__` attribute is searched in
212a depth-first fashion for *A* --- the presence of the :attr:`~class.__bases__`
213attribute is considered sufficient for this determination.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000214
215
Georg Brandl60203b42010-10-06 10:11:56 +0000216.. c:function:: int PyObject_IsSubclass(PyObject *derived, PyObject *cls)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000217
218 Returns ``1`` if the class *derived* is identical to or derived from the class
219 *cls*, otherwise returns ``0``. In case of an error, returns ``-1``. If *cls*
220 is a tuple, the check will be done against every entry in *cls*. The result will
221 be ``1`` when at least one of the checks returns ``1``, otherwise it will be
222 ``0``. If either *derived* or *cls* is not an actual class object (or tuple),
223 this function uses the generic algorithm described above.
224
225
Georg Brandl60203b42010-10-06 10:11:56 +0000226.. c:function:: int PyCallable_Check(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000227
228 Determine if the object *o* is callable. Return ``1`` if the object is callable
229 and ``0`` otherwise. This function always succeeds.
230
231
Georg Brandl60203b42010-10-06 10:11:56 +0000232.. c:function:: PyObject* PyObject_Call(PyObject *callable_object, PyObject *args, PyObject *kw)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000233
234 Call a callable Python object *callable_object*, with arguments given by the
235 tuple *args*, and named arguments given by the dictionary *kw*. If no named
236 arguments are needed, *kw* may be *NULL*. *args* must not be *NULL*, use an
237 empty tuple if no arguments are needed. Returns the result of the call on
238 success, or *NULL* on failure. This is the equivalent of the Python expression
239 ``callable_object(*args, **kw)``.
240
241
Georg Brandl60203b42010-10-06 10:11:56 +0000242.. c:function:: PyObject* PyObject_CallObject(PyObject *callable_object, PyObject *args)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000243
244 Call a callable Python object *callable_object*, with arguments given by the
245 tuple *args*. If no arguments are needed, then *args* may be *NULL*. Returns
246 the result of the call on success, or *NULL* on failure. This is the equivalent
247 of the Python expression ``callable_object(*args)``.
248
249
Serhiy Storchaka1cfebc72013-05-29 18:50:54 +0300250.. c:function:: PyObject* PyObject_CallFunction(PyObject *callable, const char *format, ...)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000251
252 Call a callable Python object *callable*, with a variable number of C arguments.
Georg Brandl60203b42010-10-06 10:11:56 +0000253 The C arguments are described using a :c:func:`Py_BuildValue` style format
Georg Brandl54a3faa2008-01-20 09:30:57 +0000254 string. The format may be *NULL*, indicating that no arguments are provided.
255 Returns the result of the call on success, or *NULL* on failure. This is the
256 equivalent of the Python expression ``callable(*args)``. Note that if you only
Georg Brandl60203b42010-10-06 10:11:56 +0000257 pass :c:type:`PyObject \*` args, :c:func:`PyObject_CallFunctionObjArgs` is a
Georg Brandl54a3faa2008-01-20 09:30:57 +0000258 faster alternative.
259
Serhiy Storchaka1cfebc72013-05-29 18:50:54 +0300260 .. versionchanged:: 3.4
261 The type of *format* was changed from ``char *``.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000262
Serhiy Storchaka1cfebc72013-05-29 18:50:54 +0300263
264.. c:function:: PyObject* PyObject_CallMethod(PyObject *o, const char *method, const char *format, ...)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000265
266 Call the method named *method* of object *o* with a variable number of C
Georg Brandl60203b42010-10-06 10:11:56 +0000267 arguments. The C arguments are described by a :c:func:`Py_BuildValue` format
Georg Brandl54a3faa2008-01-20 09:30:57 +0000268 string that should produce a tuple. The format may be *NULL*, indicating that
269 no arguments are provided. Returns the result of the call on success, or *NULL*
270 on failure. This is the equivalent of the Python expression ``o.method(args)``.
Georg Brandl60203b42010-10-06 10:11:56 +0000271 Note that if you only pass :c:type:`PyObject \*` args,
272 :c:func:`PyObject_CallMethodObjArgs` is a faster alternative.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000273
Serhiy Storchaka1cfebc72013-05-29 18:50:54 +0300274 .. versionchanged:: 3.4
275 The types of *method* and *format* were changed from ``char *``.
276
Georg Brandl54a3faa2008-01-20 09:30:57 +0000277
Georg Brandl60203b42010-10-06 10:11:56 +0000278.. c:function:: PyObject* PyObject_CallFunctionObjArgs(PyObject *callable, ..., NULL)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000279
280 Call a callable Python object *callable*, with a variable number of
Georg Brandl60203b42010-10-06 10:11:56 +0000281 :c:type:`PyObject\*` arguments. The arguments are provided as a variable number
Georg Brandl54a3faa2008-01-20 09:30:57 +0000282 of parameters followed by *NULL*. Returns the result of the call on success, or
283 *NULL* on failure.
284
285
Georg Brandl60203b42010-10-06 10:11:56 +0000286.. c:function:: PyObject* PyObject_CallMethodObjArgs(PyObject *o, PyObject *name, ..., NULL)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000287
288 Calls a method of the object *o*, where the name of the method is given as a
289 Python string object in *name*. It is called with a variable number of
Georg Brandl60203b42010-10-06 10:11:56 +0000290 :c:type:`PyObject\*` arguments. The arguments are provided as a variable number
Georg Brandl54a3faa2008-01-20 09:30:57 +0000291 of parameters followed by *NULL*. Returns the result of the call on success, or
292 *NULL* on failure.
293
294
Benjamin Peterson8f67d082010-10-17 20:54:53 +0000295.. c:function:: Py_hash_t PyObject_Hash(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000296
297 .. index:: builtin: hash
298
299 Compute and return the hash value of an object *o*. On failure, return ``-1``.
300 This is the equivalent of the Python expression ``hash(o)``.
301
Benjamin Peterson8f67d082010-10-17 20:54:53 +0000302 .. versionchanged:: 3.2
Benjamin Peterson8f67d082010-10-17 20:54:53 +0000303 The return type is now Py_hash_t. This is a signed integer the same size
304 as Py_ssize_t.
305
306
307.. c:function:: Py_hash_t PyObject_HashNotImplemented(PyObject *o)
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000308
Benjamin Petersone5384b02008-10-04 22:00:42 +0000309 Set a :exc:`TypeError` indicating that ``type(o)`` is not hashable and return ``-1``.
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000310 This function receives special treatment when stored in a ``tp_hash`` slot,
Benjamin Petersonc4fe6f32008-08-19 18:57:56 +0000311 allowing a type to explicitly indicate to the interpreter that it is not
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000312 hashable.
313
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000314
Georg Brandl60203b42010-10-06 10:11:56 +0000315.. c:function:: int PyObject_IsTrue(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000316
317 Returns ``1`` if the object *o* is considered to be true, and ``0`` otherwise.
318 This is equivalent to the Python expression ``not not o``. On failure, return
319 ``-1``.
320
321
Georg Brandl60203b42010-10-06 10:11:56 +0000322.. c:function:: int PyObject_Not(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000323
324 Returns ``0`` if the object *o* is considered to be true, and ``1`` otherwise.
325 This is equivalent to the Python expression ``not o``. On failure, return
326 ``-1``.
327
328
Georg Brandl60203b42010-10-06 10:11:56 +0000329.. c:function:: PyObject* PyObject_Type(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000330
331 .. index:: builtin: type
332
333 When *o* is non-*NULL*, returns a type object corresponding to the object type
334 of object *o*. On failure, raises :exc:`SystemError` and returns *NULL*. This
335 is equivalent to the Python expression ``type(o)``. This function increments the
336 reference count of the return value. There's really no reason to use this
337 function instead of the common expression ``o->ob_type``, which returns a
Georg Brandl60203b42010-10-06 10:11:56 +0000338 pointer of type :c:type:`PyTypeObject\*`, except when the incremented reference
Georg Brandl54a3faa2008-01-20 09:30:57 +0000339 count is needed.
340
341
Georg Brandl60203b42010-10-06 10:11:56 +0000342.. c:function:: int PyObject_TypeCheck(PyObject *o, PyTypeObject *type)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000343
344 Return true if the object *o* is of type *type* or a subtype of *type*. Both
345 parameters must be non-*NULL*.
346
347
Georg Brandl60203b42010-10-06 10:11:56 +0000348.. c:function:: Py_ssize_t PyObject_Length(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000349 Py_ssize_t PyObject_Size(PyObject *o)
350
351 .. index:: builtin: len
352
353 Return the length of object *o*. If the object *o* provides either the sequence
354 and mapping protocols, the sequence length is returned. On error, ``-1`` is
355 returned. This is the equivalent to the Python expression ``len(o)``.
356
Georg Brandl54a3faa2008-01-20 09:30:57 +0000357
Armin Ronacheraa9a79d2012-10-06 14:03:24 +0200358.. c:function:: Py_ssize_t PyObject_LengthHint(PyObject *o, Py_ssize_t default)
359
360 Return an estimated length for the object *o*. First trying to return its
361 actual length, then an estimate using ``__length_hint__``, and finally
362 returning the default value. On error ``-1`` is returned. This is the
363 equivalent to the Python expression ``operator.length_hint(o, default)``.
364
Armin Ronacher74b38b12012-10-07 10:29:32 +0200365 .. versionadded:: 3.4
366
Georg Brandl60203b42010-10-06 10:11:56 +0000367.. c:function:: PyObject* PyObject_GetItem(PyObject *o, PyObject *key)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000368
369 Return element of *o* corresponding to the object *key* or *NULL* on failure.
370 This is the equivalent of the Python expression ``o[key]``.
371
372
Georg Brandl60203b42010-10-06 10:11:56 +0000373.. c:function:: int PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000374
375 Map the object *key* to the value *v*. Returns ``-1`` on failure. This is the
376 equivalent of the Python statement ``o[key] = v``.
377
378
Georg Brandl60203b42010-10-06 10:11:56 +0000379.. c:function:: int PyObject_DelItem(PyObject *o, PyObject *key)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000380
381 Delete the mapping for *key* from *o*. Returns ``-1`` on failure. This is the
382 equivalent of the Python statement ``del o[key]``.
383
384
Georg Brandl60203b42010-10-06 10:11:56 +0000385.. c:function:: PyObject* PyObject_Dir(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000386
387 This is equivalent to the Python expression ``dir(o)``, returning a (possibly
388 empty) list of strings appropriate for the object argument, or *NULL* if there
389 was an error. If the argument is *NULL*, this is like the Python ``dir()``,
390 returning the names of the current locals; in this case, if no execution frame
Georg Brandl60203b42010-10-06 10:11:56 +0000391 is active then *NULL* is returned but :c:func:`PyErr_Occurred` will return false.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000392
393
Georg Brandl60203b42010-10-06 10:11:56 +0000394.. c:function:: PyObject* PyObject_GetIter(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000395
396 This is equivalent to the Python expression ``iter(o)``. It returns a new
397 iterator for the object argument, or the object itself if the object is already
398 an iterator. Raises :exc:`TypeError` and returns *NULL* if the object cannot be
399 iterated.