blob: 754dedc1c60370b822a36ca0cc027f0fc4b647f4 [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
Martin Panter45be8d62015-12-08 00:03:20 +000071 *v*. Raise an exception and return ``-1`` on failure;
72 return ``0`` on success. This is the equivalent of the Python statement
Georg Brandl54a3faa2008-01-20 09:30:57 +000073 ``o.attr_name = v``.
74
Martin Panter45be8d62015-12-08 00:03:20 +000075 If *v* is *NULL*, the attribute is deleted, however this feature is
76 deprecated in favour of using :c:func:`PyObject_DelAttr`.
77
Georg Brandl54a3faa2008-01-20 09:30:57 +000078
Georg Brandl60203b42010-10-06 10:11:56 +000079.. c:function:: int PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v)
Georg Brandl54a3faa2008-01-20 09:30:57 +000080
81 Set the value of the attribute named *attr_name*, for object *o*, to the value
Martin Panter45be8d62015-12-08 00:03:20 +000082 *v*. Raise an exception and return ``-1`` on failure;
83 return ``0`` on success. This is the equivalent of the Python statement
Georg Brandl54a3faa2008-01-20 09:30:57 +000084 ``o.attr_name = v``.
85
Martin Panter45be8d62015-12-08 00:03:20 +000086 If *v* is *NULL*, the attribute is deleted, however this feature is
87 deprecated in favour of using :c:func:`PyObject_DelAttrString`.
88
Georg Brandl54a3faa2008-01-20 09:30:57 +000089
Georg Brandl60203b42010-10-06 10:11:56 +000090.. c:function:: int PyObject_GenericSetAttr(PyObject *o, PyObject *name, PyObject *value)
Benjamin Petersond23f8222009-04-05 19:13:16 +000091
Martin Panter45be8d62015-12-08 00:03:20 +000092 Generic attribute setter and deleter function that is meant
93 to be put into a type object's :c:member:`~PyTypeObject.tp_setattro`
94 slot. It looks for a data descriptor in the
Benjamin Petersond23f8222009-04-05 19:13:16 +000095 dictionary of classes in the object's MRO, and if found it takes preference
Martin Panter45be8d62015-12-08 00:03:20 +000096 over setting or deleting the attribute in the instance dictionary. Otherwise, the
97 attribute is set or deleted in the object's :attr:`~object.__dict__` (if present).
98 On success, ``0`` is returned, otherwise an :exc:`AttributeError`
99 is raised and ``-1`` is returned.
Benjamin Petersond23f8222009-04-05 19:13:16 +0000100
101
Georg Brandl60203b42010-10-06 10:11:56 +0000102.. c:function:: int PyObject_DelAttr(PyObject *o, PyObject *attr_name)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000103
104 Delete attribute named *attr_name*, for object *o*. Returns ``-1`` on failure.
105 This is the equivalent of the Python statement ``del o.attr_name``.
106
107
Georg Brandl60203b42010-10-06 10:11:56 +0000108.. c:function:: int PyObject_DelAttrString(PyObject *o, const char *attr_name)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000109
110 Delete attribute named *attr_name*, for object *o*. Returns ``-1`` on failure.
111 This is the equivalent of the Python statement ``del o.attr_name``.
112
113
Benjamin Peterson1c262a62014-10-05 21:20:36 -0400114.. c:function:: PyObject* PyObject_GenericGetDict(PyObject *o, void *context)
Benjamin Peterson8eb12692012-02-19 19:59:10 -0500115
116 A generic implementation for the getter of a ``__dict__`` descriptor. It
117 creates the dictionary if necessary.
118
Benjamin Peterson43844352012-02-20 08:48:25 -0500119 .. versionadded:: 3.3
120
Benjamin Peterson8eb12692012-02-19 19:59:10 -0500121
Benjamin Peterson1c262a62014-10-05 21:20:36 -0400122.. c:function:: int PyObject_GenericSetDict(PyObject *o, void *context)
Benjamin Peterson8eb12692012-02-19 19:59:10 -0500123
124 A generic implementation for the setter of a ``__dict__`` descriptor. This
125 implementation does not allow the dictionary to be deleted.
126
Benjamin Peterson43844352012-02-20 08:48:25 -0500127 .. versionadded:: 3.3
128
Benjamin Peterson8eb12692012-02-19 19:59:10 -0500129
Georg Brandl60203b42010-10-06 10:11:56 +0000130.. c:function:: PyObject* PyObject_RichCompare(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. This is the equivalent of
136 the Python expression ``o1 op o2``, where ``op`` is the operator corresponding
137 to *opid*. Returns the value of the comparison on success, or *NULL* on failure.
138
139
Georg Brandl60203b42010-10-06 10:11:56 +0000140.. c:function:: int PyObject_RichCompareBool(PyObject *o1, PyObject *o2, int opid)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000141
142 Compare the values of *o1* and *o2* using the operation specified by *opid*,
143 which must be one of :const:`Py_LT`, :const:`Py_LE`, :const:`Py_EQ`,
144 :const:`Py_NE`, :const:`Py_GT`, or :const:`Py_GE`, corresponding to ``<``,
145 ``<=``, ``==``, ``!=``, ``>``, or ``>=`` respectively. Returns ``-1`` on error,
146 ``0`` if the result is false, ``1`` otherwise. This is the equivalent of the
147 Python expression ``o1 op o2``, where ``op`` is the operator corresponding to
148 *opid*.
149
Eli Benderskyad30c422011-01-15 10:23:34 +0000150.. note::
151 If *o1* and *o2* are the same object, :c:func:`PyObject_RichCompareBool`
152 will always return ``1`` for :const:`Py_EQ` and ``0`` for :const:`Py_NE`.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000153
Georg Brandl60203b42010-10-06 10:11:56 +0000154.. c:function:: PyObject* PyObject_Repr(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000155
156 .. index:: builtin: repr
157
158 Compute a string representation of object *o*. Returns the string
159 representation on success, *NULL* on failure. This is the equivalent of the
Georg Brandl559e5d72008-06-11 18:37:52 +0000160 Python expression ``repr(o)``. Called by the :func:`repr` built-in function.
161
Nick Coghlanc0bc0b42014-02-09 12:00:01 +1000162 .. versionchanged:: 3.4
163 This function now includes a debug assertion to help ensure that it
164 does not silently discard an active exception.
Georg Brandl559e5d72008-06-11 18:37:52 +0000165
Georg Brandl60203b42010-10-06 10:11:56 +0000166.. c:function:: PyObject* PyObject_ASCII(PyObject *o)
Georg Brandl559e5d72008-06-11 18:37:52 +0000167
168 .. index:: builtin: ascii
169
Georg Brandl60203b42010-10-06 10:11:56 +0000170 As :c:func:`PyObject_Repr`, compute a string representation of object *o*, but
Georg Brandl559e5d72008-06-11 18:37:52 +0000171 escape the non-ASCII characters in the string returned by
Georg Brandl60203b42010-10-06 10:11:56 +0000172 :c:func:`PyObject_Repr` with ``\x``, ``\u`` or ``\U`` escapes. This generates
173 a string similar to that returned by :c:func:`PyObject_Repr` in Python 2.
Georg Brandl559e5d72008-06-11 18:37:52 +0000174 Called by the :func:`ascii` built-in function.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000175
Chris Jerdonekbb4e9412012-11-28 01:38:40 -0800176 .. index:: string; PyObject_Str (C function)
177
Georg Brandl54a3faa2008-01-20 09:30:57 +0000178
Georg Brandl60203b42010-10-06 10:11:56 +0000179.. c:function:: PyObject* PyObject_Str(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000180
Georg Brandl54a3faa2008-01-20 09:30:57 +0000181 Compute a string representation of object *o*. Returns the string
182 representation on success, *NULL* on failure. This is the equivalent of the
183 Python expression ``str(o)``. Called by the :func:`str` built-in function
184 and, therefore, by the :func:`print` function.
185
Nick Coghlan3d7b3642014-02-09 10:57:34 +1000186 .. versionchanged:: 3.4
Nick Coghlanc0bc0b42014-02-09 12:00:01 +1000187 This function now includes a debug assertion to help ensure that it
188 does not silently discard an active exception.
Nick Coghlan3d7b3642014-02-09 10:57:34 +1000189
Georg Brandl60203b42010-10-06 10:11:56 +0000190.. c:function:: PyObject* PyObject_Bytes(PyObject *o)
Benjamin Petersonc15a0732008-08-26 16:46:47 +0000191
192 .. index:: builtin: bytes
193
Alexandre Vassalottieb6f8de2009-12-31 03:56:09 +0000194 Compute a bytes representation of object *o*. *NULL* is returned on
195 failure and a bytes object on success. This is equivalent to the Python
196 expression ``bytes(o)``, when *o* is not an integer. Unlike ``bytes(o)``,
197 a TypeError is raised when *o* is an integer instead of a zero-initialized
198 bytes object.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000199
Georg Brandl54a3faa2008-01-20 09:30:57 +0000200
Georg Brandl60203b42010-10-06 10:11:56 +0000201.. c:function:: int PyObject_IsSubclass(PyObject *derived, PyObject *cls)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000202
Georg Brandlf6d6dc22014-10-06 14:38:53 +0200203 Return ``1`` if the class *derived* is identical to or derived from the class
204 *cls*, otherwise return ``0``. In case of an error, return ``-1``.
205
206 If *cls* is a tuple, the check will be done against every entry in *cls*.
207 The result will be ``1`` when at least one of the checks returns ``1``,
208 otherwise it will be ``0``.
209
210 If *cls* has a :meth:`~class.__subclasscheck__` method, it will be called to
211 determine the subclass status as described in :pep:`3119`. Otherwise,
212 *derived* is a subclass of *cls* if it is a direct or indirect subclass,
213 i.e. contained in ``cls.__mro__``.
214
215 Normally only class objects, i.e. instances of :class:`type` or a derived
Serhiy Storchakaa7db0572015-05-02 19:24:41 +0300216 class, are considered classes. However, objects can override this by having
Georg Brandlf6d6dc22014-10-06 14:38:53 +0200217 a :attr:`__bases__` attribute (which must be a tuple of base classes).
218
219
220.. c:function:: int PyObject_IsInstance(PyObject *inst, PyObject *cls)
221
222 Return ``1`` if *inst* is an instance of the class *cls* or a subclass of
223 *cls*, or ``0`` if not. On error, returns ``-1`` and sets an exception.
224
225 If *cls* is a tuple, the check will be done against every entry in *cls*.
226 The result will be ``1`` when at least one of the checks returns ``1``,
227 otherwise it will be ``0``.
228
229 If *cls* has a :meth:`~class.__instancecheck__` method, it will be called to
230 determine the subclass status as described in :pep:`3119`. Otherwise, *inst*
231 is an instance of *cls* if its class is a subclass of *cls*.
232
233 An instance *inst* can override what is considered its class by having a
234 :attr:`__class__` attribute.
235
236 An object *cls* can override if it is considered a class, and what its base
237 classes are, by having a :attr:`__bases__` attribute (which must be a tuple
238 of base classes).
Georg Brandl54a3faa2008-01-20 09:30:57 +0000239
240
Georg Brandl60203b42010-10-06 10:11:56 +0000241.. c:function:: int PyCallable_Check(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000242
243 Determine if the object *o* is callable. Return ``1`` if the object is callable
244 and ``0`` otherwise. This function always succeeds.
245
246
Victor Stinner2d0eb652016-12-06 16:27:24 +0100247.. c:function:: PyObject* PyObject_Call(PyObject *callable, PyObject *args, PyObject *kwargs)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000248
Victor Stinner2d0eb652016-12-06 16:27:24 +0100249 Call a callable Python object *callable*, with arguments given by the
250 tuple *args*, and named arguments given by the dictionary *kwargs*.
251
252 *args* must not be *NULL*, use an empty tuple if no arguments are needed.
253 If no named arguments are needed, *kwargs* can be *NULL*.
254
255 Returns the result of the call on success, or *NULL* on failure.
256
257 This is the equivalent of the Python expression:
258 ``callable(*args, **kwargs)``.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000259
260
Victor Stinner2d0eb652016-12-06 16:27:24 +0100261.. c:function:: PyObject* PyObject_CallObject(PyObject *callable, PyObject *args)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000262
Victor Stinner2d0eb652016-12-06 16:27:24 +0100263 Call a callable Python object *callable*, with arguments given by the
264 tuple *args*. If no arguments are needed, then *args* can be *NULL*.
265
266 Returns the result of the call on success, or *NULL* on failure.
267
268 This is the equivalent of the Python expression: ``callable(*args)``.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000269
270
Serhiy Storchaka1cfebc72013-05-29 18:50:54 +0300271.. c:function:: PyObject* PyObject_CallFunction(PyObject *callable, const char *format, ...)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000272
273 Call a callable Python object *callable*, with a variable number of C arguments.
Georg Brandl60203b42010-10-06 10:11:56 +0000274 The C arguments are described using a :c:func:`Py_BuildValue` style format
Victor Stinner2d0eb652016-12-06 16:27:24 +0100275 string. The format can be *NULL*, indicating that no arguments are provided.
276
277 Returns the result of the call on success, or *NULL* on failure.
278
279 This is the equivalent of the Python expression: ``callable(*args)``.
280
281 Note that if you only pass :c:type:`PyObject \*` args,
282 :c:func:`PyObject_CallFunctionObjArgs` is a faster alternative.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000283
Serhiy Storchaka1cfebc72013-05-29 18:50:54 +0300284 .. versionchanged:: 3.4
285 The type of *format* was changed from ``char *``.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000286
Serhiy Storchaka1cfebc72013-05-29 18:50:54 +0300287
Victor Stinner2d0eb652016-12-06 16:27:24 +0100288.. c:function:: PyObject* PyObject_CallMethod(PyObject *obj, const char *name, const char *format, ...)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000289
Victor Stinner2d0eb652016-12-06 16:27:24 +0100290 Call the method named *name* of object *obj* with a variable number of C
Georg Brandl60203b42010-10-06 10:11:56 +0000291 arguments. The C arguments are described by a :c:func:`Py_BuildValue` format
Victor Stinner2d0eb652016-12-06 16:27:24 +0100292 string that should produce a tuple.
293
294 The format can be *NULL*, indicating that no arguments are provided.
295
296 Returns the result of the call on success, or *NULL* on failure.
297
298 This is the equivalent of the Python expression:
299 ``obj.name(arg1, arg2, ...)``.
300
Georg Brandl60203b42010-10-06 10:11:56 +0000301 Note that if you only pass :c:type:`PyObject \*` args,
302 :c:func:`PyObject_CallMethodObjArgs` is a faster alternative.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000303
Serhiy Storchaka1cfebc72013-05-29 18:50:54 +0300304 .. versionchanged:: 3.4
Victor Stinner2d0eb652016-12-06 16:27:24 +0100305 The types of *name* and *format* were changed from ``char *``.
Serhiy Storchaka1cfebc72013-05-29 18:50:54 +0300306
Georg Brandl54a3faa2008-01-20 09:30:57 +0000307
Georg Brandl60203b42010-10-06 10:11:56 +0000308.. c:function:: PyObject* PyObject_CallFunctionObjArgs(PyObject *callable, ..., NULL)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000309
310 Call a callable Python object *callable*, with a variable number of
Georg Brandl60203b42010-10-06 10:11:56 +0000311 :c:type:`PyObject\*` arguments. The arguments are provided as a variable number
Victor Stinner2d0eb652016-12-06 16:27:24 +0100312 of parameters followed by *NULL*.
313
314 Returns the result of the call on success, or *NULL* on failure.
315
316 This is the equivalent of the Python expression:
317 ``callable(arg1, arg2, ...)``.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000318
319
Victor Stinner2d0eb652016-12-06 16:27:24 +0100320.. c:function:: PyObject* PyObject_CallMethodObjArgs(PyObject *obj, PyObject *name, ..., NULL)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000321
Victor Stinner2d0eb652016-12-06 16:27:24 +0100322 Calls a method of the Python object *obj*, where the name of the method is given as a
Georg Brandl54a3faa2008-01-20 09:30:57 +0000323 Python string object in *name*. It is called with a variable number of
Georg Brandl60203b42010-10-06 10:11:56 +0000324 :c:type:`PyObject\*` arguments. The arguments are provided as a variable number
Georg Brandl54a3faa2008-01-20 09:30:57 +0000325 of parameters followed by *NULL*. Returns the result of the call on success, or
326 *NULL* on failure.
327
328
Benjamin Peterson8f67d082010-10-17 20:54:53 +0000329.. c:function:: Py_hash_t PyObject_Hash(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000330
331 .. index:: builtin: hash
332
333 Compute and return the hash value of an object *o*. On failure, return ``-1``.
334 This is the equivalent of the Python expression ``hash(o)``.
335
Benjamin Peterson8f67d082010-10-17 20:54:53 +0000336 .. versionchanged:: 3.2
Benjamin Peterson8f67d082010-10-17 20:54:53 +0000337 The return type is now Py_hash_t. This is a signed integer the same size
338 as Py_ssize_t.
339
340
341.. c:function:: Py_hash_t PyObject_HashNotImplemented(PyObject *o)
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000342
Benjamin Petersone5384b02008-10-04 22:00:42 +0000343 Set a :exc:`TypeError` indicating that ``type(o)`` is not hashable and return ``-1``.
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000344 This function receives special treatment when stored in a ``tp_hash`` slot,
Benjamin Petersonc4fe6f32008-08-19 18:57:56 +0000345 allowing a type to explicitly indicate to the interpreter that it is not
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000346 hashable.
347
Nick Coghlan7a70a3a2008-08-18 13:18:16 +0000348
Georg Brandl60203b42010-10-06 10:11:56 +0000349.. c:function:: int PyObject_IsTrue(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000350
351 Returns ``1`` if the object *o* is considered to be true, and ``0`` otherwise.
352 This is equivalent to the Python expression ``not not o``. On failure, return
353 ``-1``.
354
355
Georg Brandl60203b42010-10-06 10:11:56 +0000356.. c:function:: int PyObject_Not(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000357
358 Returns ``0`` if the object *o* is considered to be true, and ``1`` otherwise.
359 This is equivalent to the Python expression ``not o``. On failure, return
360 ``-1``.
361
362
Georg Brandl60203b42010-10-06 10:11:56 +0000363.. c:function:: PyObject* PyObject_Type(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000364
365 .. index:: builtin: type
366
367 When *o* is non-*NULL*, returns a type object corresponding to the object type
368 of object *o*. On failure, raises :exc:`SystemError` and returns *NULL*. This
369 is equivalent to the Python expression ``type(o)``. This function increments the
370 reference count of the return value. There's really no reason to use this
371 function instead of the common expression ``o->ob_type``, which returns a
Georg Brandl60203b42010-10-06 10:11:56 +0000372 pointer of type :c:type:`PyTypeObject\*`, except when the incremented reference
Georg Brandl54a3faa2008-01-20 09:30:57 +0000373 count is needed.
374
375
Georg Brandl60203b42010-10-06 10:11:56 +0000376.. c:function:: int PyObject_TypeCheck(PyObject *o, PyTypeObject *type)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000377
378 Return true if the object *o* is of type *type* or a subtype of *type*. Both
379 parameters must be non-*NULL*.
380
381
Georg Brandl60203b42010-10-06 10:11:56 +0000382.. c:function:: Py_ssize_t PyObject_Length(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000383 Py_ssize_t PyObject_Size(PyObject *o)
384
385 .. index:: builtin: len
386
387 Return the length of object *o*. If the object *o* provides either the sequence
388 and mapping protocols, the sequence length is returned. On error, ``-1`` is
389 returned. This is the equivalent to the Python expression ``len(o)``.
390
Georg Brandl54a3faa2008-01-20 09:30:57 +0000391
Armin Ronacheraa9a79d2012-10-06 14:03:24 +0200392.. c:function:: Py_ssize_t PyObject_LengthHint(PyObject *o, Py_ssize_t default)
393
Larry Hastings3732ed22014-03-15 21:13:56 -0700394 Return an estimated length for the object *o*. First try to return its
395 actual length, then an estimate using :meth:`~object.__length_hint__`, and
396 finally return the default value. On error return ``-1``. This is the
Armin Ronacheraa9a79d2012-10-06 14:03:24 +0200397 equivalent to the Python expression ``operator.length_hint(o, default)``.
398
Armin Ronacher74b38b12012-10-07 10:29:32 +0200399 .. versionadded:: 3.4
400
Georg Brandldf48b972014-03-24 09:06:18 +0100401
Georg Brandl60203b42010-10-06 10:11:56 +0000402.. c:function:: PyObject* PyObject_GetItem(PyObject *o, PyObject *key)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000403
404 Return element of *o* corresponding to the object *key* or *NULL* on failure.
405 This is the equivalent of the Python expression ``o[key]``.
406
407
Georg Brandl60203b42010-10-06 10:11:56 +0000408.. c:function:: int PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000409
Martin Panter45be8d62015-12-08 00:03:20 +0000410 Map the object *key* to the value *v*. Raise an exception and
411 return ``-1`` on failure; return ``0`` on success. This is the
Georg Brandl54a3faa2008-01-20 09:30:57 +0000412 equivalent of the Python statement ``o[key] = v``.
413
414
Georg Brandl60203b42010-10-06 10:11:56 +0000415.. c:function:: int PyObject_DelItem(PyObject *o, PyObject *key)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000416
417 Delete the mapping for *key* from *o*. Returns ``-1`` on failure. This is the
418 equivalent of the Python statement ``del o[key]``.
419
420
Georg Brandl60203b42010-10-06 10:11:56 +0000421.. c:function:: PyObject* PyObject_Dir(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000422
423 This is equivalent to the Python expression ``dir(o)``, returning a (possibly
424 empty) list of strings appropriate for the object argument, or *NULL* if there
425 was an error. If the argument is *NULL*, this is like the Python ``dir()``,
426 returning the names of the current locals; in this case, if no execution frame
Georg Brandl60203b42010-10-06 10:11:56 +0000427 is active then *NULL* is returned but :c:func:`PyErr_Occurred` will return false.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000428
429
Georg Brandl60203b42010-10-06 10:11:56 +0000430.. c:function:: PyObject* PyObject_GetIter(PyObject *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000431
432 This is equivalent to the Python expression ``iter(o)``. It returns a new
433 iterator for the object argument, or the object itself if the object is already
434 an iterator. Raises :exc:`TypeError` and returns *NULL* if the object cannot be
435 iterated.