1 .. highlightlang:: c 2 3 .. _object: 4 5 Object Protocol 6 =============== 7 8 9 .. c:function:: int PyObject_Print(PyObject *o, FILE *fp, int flags) 10 11 Print an object *o*, on file *fp*. Returns ``-1`` on error. The flags argument 12 is used to enable certain printing options. The only option currently supported 13 is :const:`Py_PRINT_RAW`; if given, the :func:`str` of the object is written 14 instead of the :func:`repr`. 15 16 17 .. c:function:: int PyObject_HasAttr(PyObject *o, PyObject *attr_name) 18 19 Returns ``1`` if *o* has the attribute *attr_name*, and ``0`` otherwise. This 20 is equivalent to the Python expression ``hasattr(o, attr_name)``. This function 21 always succeeds. 22 23 24 .. c:function:: int PyObject_HasAttrString(PyObject *o, const char *attr_name) 25 26 Returns ``1`` if *o* has the attribute *attr_name*, and ``0`` otherwise. This 27 is equivalent to the Python expression ``hasattr(o, attr_name)``. This function 28 always succeeds. 29 30 31 .. c:function:: PyObject* PyObject_GetAttr(PyObject *o, PyObject *attr_name) 32 33 Retrieve an attribute named *attr_name* from object *o*. Returns the attribute 34 value on success, or *NULL* on failure. This is the equivalent of the Python 35 expression ``o.attr_name``. 36 37 38 .. c:function:: PyObject* PyObject_GetAttrString(PyObject *o, const char *attr_name) 39 40 Retrieve an attribute named *attr_name* from object *o*. Returns the attribute 41 value on success, or *NULL* on failure. This is the equivalent of the Python 42 expression ``o.attr_name``. 43 44 45 .. c:function:: PyObject* PyObject_GenericGetAttr(PyObject *o, PyObject *name) 46 47 Generic attribute getter function that is meant to be put into a type 48 object's ``tp_getattro`` slot. It looks for a descriptor in the dictionary 49 of classes in the object's MRO as well as an attribute in the object's 50 :attr:`~object.__dict__` (if present). As outlined in :ref:`descriptors`, 51 data descriptors take preference over instance attributes, while non-data 52 descriptors don't. Otherwise, an :exc:`AttributeError` is raised. 53 54 55 .. c:function:: int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v) 56 57 Set the value of the attribute named *attr_name*, for object *o*, to the value 58 *v*. Raise an exception and return ``-1`` on failure; 59 return ``0`` on success. This is the equivalent of the Python statement 60 ``o.attr_name = v``. 61 62 If *v* is *NULL*, the attribute is deleted, however this feature is 63 deprecated in favour of using :c:func:`PyObject_DelAttr`. 64 65 66 .. c:function:: int PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v) 67 68 Set the value of the attribute named *attr_name*, for object *o*, to the value 69 *v*. Raise an exception and return ``-1`` on failure; 70 return ``0`` on success. This is the equivalent of the Python statement 71 ``o.attr_name = v``. 72 73 If *v* is *NULL*, the attribute is deleted, however this feature is 74 deprecated in favour of using :c:func:`PyObject_DelAttrString`. 75 76 77 .. c:function:: int PyObject_GenericSetAttr(PyObject *o, PyObject *name, PyObject *value) 78 79 Generic attribute setter and deleter function that is meant 80 to be put into a type object's :c:member:`~PyTypeObject.tp_setattro` 81 slot. It looks for a data descriptor in the 82 dictionary of classes in the object's MRO, and if found it takes preference 83 over setting or deleting the attribute in the instance dictionary. Otherwise, the 84 attribute is set or deleted in the object's :attr:`~object.__dict__` (if present). 85 On success, ``0`` is returned, otherwise an :exc:`AttributeError` 86 is raised and ``-1`` is returned. 87 88 89 .. c:function:: int PyObject_DelAttr(PyObject *o, PyObject *attr_name) 90 91 Delete attribute named *attr_name*, for object *o*. Returns ``-1`` on failure. 92 This is the equivalent of the Python statement ``del o.attr_name``. 93 94 95 .. c:function:: int PyObject_DelAttrString(PyObject *o, const char *attr_name) 96 97 Delete attribute named *attr_name*, for object *o*. Returns ``-1`` on failure. 98 This is the equivalent of the Python statement ``del o.attr_name``. 99 100 101 .. c:function:: PyObject* PyObject_RichCompare(PyObject *o1, PyObject *o2, int opid) 102 103 Compare the values of *o1* and *o2* using the operation specified by *opid*, 104 which must be one of :const:`Py_LT`, :const:`Py_LE`, :const:`Py_EQ`, 105 :const:`Py_NE`, :const:`Py_GT`, or :const:`Py_GE`, corresponding to ``<``, 106 ``<=``, ``==``, ``!=``, ``>``, or ``>=`` respectively. This is the equivalent of 107 the Python expression ``o1 op o2``, where ``op`` is the operator corresponding 108 to *opid*. Returns the value of the comparison on success, or *NULL* on failure. 109 110 111 .. c:function:: int PyObject_RichCompareBool(PyObject *o1, PyObject *o2, int opid) 112 113 Compare the values of *o1* and *o2* using the operation specified by *opid*, 114 which must be one of :const:`Py_LT`, :const:`Py_LE`, :const:`Py_EQ`, 115 :const:`Py_NE`, :const:`Py_GT`, or :const:`Py_GE`, corresponding to ``<``, 116 ``<=``, ``==``, ``!=``, ``>``, or ``>=`` respectively. Returns ``-1`` on error, 117 ``0`` if the result is false, ``1`` otherwise. This is the equivalent of the 118 Python expression ``o1 op o2``, where ``op`` is the operator corresponding to 119 *opid*. 120 121 .. note:: 122 If *o1* and *o2* are the same object, :c:func:`PyObject_RichCompareBool` 123 will always return ``1`` for :const:`Py_EQ` and ``0`` for :const:`Py_NE`. 124 125 .. c:function:: int PyObject_Cmp(PyObject *o1, PyObject *o2, int *result) 126 127 .. index:: builtin: cmp 128 129 Compare the values of *o1* and *o2* using a routine provided by *o1*, if one 130 exists, otherwise with a routine provided by *o2*. The result of the comparison 131 is returned in *result*. Returns ``-1`` on failure. This is the equivalent of 132 the Python statement ``result = cmp(o1, o2)``. 133 134 135 .. c:function:: int PyObject_Compare(PyObject *o1, PyObject *o2) 136 137 .. index:: builtin: cmp 138 139 Compare the values of *o1* and *o2* using a routine provided by *o1*, if one 140 exists, otherwise with a routine provided by *o2*. Returns the result of the 141 comparison on success. On error, the value returned is undefined; use 142 :c:func:`PyErr_Occurred` to detect an error. This is equivalent to the Python 143 expression ``cmp(o1, o2)``. 144 145 146 .. c:function:: PyObject* PyObject_Repr(PyObject *o) 147 148 .. index:: builtin: repr 149 150 Compute a string representation of object *o*. Returns the string 151 representation on success, *NULL* on failure. This is the equivalent of the 152 Python expression ``repr(o)``. Called by the :func:`repr` built-in function and 153 by reverse quotes. 154 155 156 .. c:function:: PyObject* PyObject_Str(PyObject *o) 157 158 .. index:: builtin: str 159 160 Compute a string representation of object *o*. Returns the string 161 representation on success, *NULL* on failure. This is the equivalent of the 162 Python expression ``str(o)``. Called by the :func:`str` built-in function and 163 by the :keyword:`print` statement. 164 165 166 .. c:function:: PyObject* PyObject_Bytes(PyObject *o) 167 168 .. index:: builtin: bytes 169 170 Compute a bytes representation of object *o*. In 2.x, this is just an alias 171 for :c:func:`PyObject_Str`. 172 173 174 .. c:function:: PyObject* PyObject_Unicode(PyObject *o) 175 176 .. index:: builtin: unicode 177 178 Compute a Unicode string representation of object *o*. Returns the Unicode 179 string representation on success, *NULL* on failure. This is the equivalent of 180 the Python expression ``unicode(o)``. Called by the :func:`unicode` built-in 181 function. 182 183 184 .. c:function:: int PyObject_IsInstance(PyObject *inst, PyObject *cls) 185 186 Returns ``1`` if *inst* is an instance of the class *cls* or a subclass of 187 *cls*, or ``0`` if not. On error, returns ``-1`` and sets an exception. If 188 *cls* is a type object rather than a class object, :c:func:`PyObject_IsInstance` 189 returns ``1`` if *inst* is of type *cls*. If *cls* is a tuple, the check will 190 be done against every entry in *cls*. The result will be ``1`` when at least one 191 of the checks returns ``1``, otherwise it will be ``0``. If *inst* is not a 192 class instance and *cls* is neither a type object, nor a class object, nor a 193 tuple, *inst* must have a :attr:`~instance.__class__` attribute --- the 194 class relationship of the value of that attribute with *cls* will be used 195 to determine the result of this function. 196 197 .. versionadded:: 2.1 198 199 .. versionchanged:: 2.2 200 Support for a tuple as the second argument added. 201 202 Subclass determination is done in a fairly straightforward way, but includes a 203 wrinkle that implementors of extensions to the class system may want to be aware 204 of. If :class:`A` and :class:`B` are class objects, :class:`B` is a subclass of 205 :class:`A` if it inherits from :class:`A` either directly or indirectly. If 206 either is not a class object, a more general mechanism is used to determine the 207 class relationship of the two objects. When testing if *B* is a subclass of 208 *A*, if *A* is *B*, :c:func:`PyObject_IsSubclass` returns true. If *A* and *B* 209 are different objects, *B*'s :attr:`~class.__bases__` attribute is searched in 210 a depth-first fashion for *A* --- the presence of the :attr:`~class.__bases__` 211 attribute is considered sufficient for this determination. 212 213 214 .. c:function:: int PyObject_IsSubclass(PyObject *derived, PyObject *cls) 215 216 Returns ``1`` if the class *derived* is identical to or derived from the class 217 *cls*, otherwise returns ``0``. In case of an error, returns ``-1``. If *cls* 218 is a tuple, the check will be done against every entry in *cls*. The result will 219 be ``1`` when at least one of the checks returns ``1``, otherwise it will be 220 ``0``. If either *derived* or *cls* is not an actual class object (or tuple), 221 this function uses the generic algorithm described above. 222 223 .. versionadded:: 2.1 224 225 .. versionchanged:: 2.3 226 Older versions of Python did not support a tuple as the second argument. 227 228 229 .. c:function:: int PyCallable_Check(PyObject *o) 230 231 Determine if the object *o* is callable. Return ``1`` if the object is callable 232 and ``0`` otherwise. This function always succeeds. 233 234 235 .. c:function:: PyObject* PyObject_Call(PyObject *callable_object, PyObject *args, PyObject *kw) 236 237 .. index:: builtin: apply 238 239 Call a callable Python object *callable_object*, with arguments given by the 240 tuple *args*, and named arguments given by the dictionary *kw*. If no named 241 arguments are needed, *kw* may be *NULL*. *args* must not be *NULL*, use an 242 empty tuple if no arguments are needed. Returns the result of the call on 243 success, or *NULL* on failure. This is the equivalent of the Python expression 244 ``apply(callable_object, args, kw)`` or ``callable_object(*args, **kw)``. 245 246 .. versionadded:: 2.2 247 248 249 .. c:function:: PyObject* PyObject_CallObject(PyObject *callable_object, PyObject *args) 250 251 .. index:: builtin: apply 252 253 Call a callable Python object *callable_object*, with arguments given by the 254 tuple *args*. If no arguments are needed, then *args* may be *NULL*. Returns 255 the result of the call on success, or *NULL* on failure. This is the equivalent 256 of the Python expression ``apply(callable_object, args)`` or 257 ``callable_object(*args)``. 258 259 260 .. c:function:: PyObject* PyObject_CallFunction(PyObject *callable, char *format, ...) 261 262 .. index:: builtin: apply 263 264 Call a callable Python object *callable*, with a variable number of C arguments. 265 The C arguments are described using a :c:func:`Py_BuildValue` style format 266 string. The format may be *NULL*, indicating that no arguments are provided. 267 Returns the result of the call on success, or *NULL* on failure. This is the 268 equivalent of the Python expression ``apply(callable, args)`` or 269 ``callable(*args)``. Note that if you only pass :c:type:`PyObject \*` args, 270 :c:func:`PyObject_CallFunctionObjArgs` is a faster alternative. 271 272 273 .. c:function:: PyObject* PyObject_CallMethod(PyObject *o, char *method, char *format, ...) 274 275 Call the method named *method* of object *o* with a variable number of C 276 arguments. The C arguments are described by a :c:func:`Py_BuildValue` format 277 string that should produce a tuple. The format may be *NULL*, indicating that 278 no arguments are provided. Returns the result of the call on success, or *NULL* 279 on failure. This is the equivalent of the Python expression ``o.method(args)``. 280 Note that if you only pass :c:type:`PyObject \*` args, 281 :c:func:`PyObject_CallMethodObjArgs` is a faster alternative. 282 283 284 .. c:function:: PyObject* PyObject_CallFunctionObjArgs(PyObject *callable, ..., NULL) 285 286 Call a callable Python object *callable*, with a variable number of 287 :c:type:`PyObject\*` arguments. The arguments are provided as a variable number 288 of parameters followed by *NULL*. Returns the result of the call on success, or 289 *NULL* on failure. 290 291 .. versionadded:: 2.2 292 293 294 .. c:function:: PyObject* PyObject_CallMethodObjArgs(PyObject *o, PyObject *name, ..., NULL) 295 296 Calls a method of the object *o*, where the name of the method is given as a 297 Python string object in *name*. It is called with a variable number of 298 :c:type:`PyObject\*` arguments. The arguments are provided as a variable number 299 of parameters followed by *NULL*. Returns the result of the call on success, or 300 *NULL* on failure. 301 302 .. versionadded:: 2.2 303 304 305 .. c:function:: long PyObject_Hash(PyObject *o) 306 307 .. index:: builtin: hash 308 309 Compute and return the hash value of an object *o*. On failure, return ``-1``. 310 This is the equivalent of the Python expression ``hash(o)``. 311 312 313 .. c:function:: long PyObject_HashNotImplemented(PyObject *o) 314 315 Set a :exc:`TypeError` indicating that ``type(o)`` is not hashable and return ``-1``. 316 This function receives special treatment when stored in a ``tp_hash`` slot, 317 allowing a type to explicitly indicate to the interpreter that it is not 318 hashable. 319 320 .. versionadded:: 2.6 321 322 323 .. c:function:: int PyObject_IsTrue(PyObject *o) 324 325 Returns ``1`` if the object *o* is considered to be true, and ``0`` otherwise. 326 This is equivalent to the Python expression ``not not o``. On failure, return 327 ``-1``. 328 329 330 .. c:function:: int PyObject_Not(PyObject *o) 331 332 Returns ``0`` if the object *o* is considered to be true, and ``1`` otherwise. 333 This is equivalent to the Python expression ``not o``. On failure, return 334 ``-1``. 335 336 337 .. c:function:: PyObject* PyObject_Type(PyObject *o) 338 339 .. index:: builtin: type 340 341 When *o* is non-*NULL*, returns a type object corresponding to the object type 342 of object *o*. On failure, raises :exc:`SystemError` and returns *NULL*. This 343 is equivalent to the Python expression ``type(o)``. This function increments the 344 reference count of the return value. There's really no reason to use this 345 function instead of the common expression ``o->ob_type``, which returns a 346 pointer of type :c:type:`PyTypeObject\*`, except when the incremented reference 347 count is needed. 348 349 350 .. c:function:: int PyObject_TypeCheck(PyObject *o, PyTypeObject *type) 351 352 Return true if the object *o* is of type *type* or a subtype of *type*. Both 353 parameters must be non-*NULL*. 354 355 .. versionadded:: 2.2 356 357 358 .. c:function:: Py_ssize_t PyObject_Length(PyObject *o) 359 Py_ssize_t PyObject_Size(PyObject *o) 360 361 .. index:: builtin: len 362 363 Return the length of object *o*. If the object *o* provides either the sequence 364 and mapping protocols, the sequence length is returned. On error, ``-1`` is 365 returned. This is the equivalent to the Python expression ``len(o)``. 366 367 .. versionchanged:: 2.5 368 These functions returned an :c:type:`int` type. This might require 369 changes in your code for properly supporting 64-bit systems. 370 371 372 .. c:function:: PyObject* PyObject_GetItem(PyObject *o, PyObject *key) 373 374 Return element of *o* corresponding to the object *key* or *NULL* on failure. 375 This is the equivalent of the Python expression ``o[key]``. 376 377 378 .. c:function:: int PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v) 379 380 Map the object *key* to the value *v*. Raise an exception and 381 return ``-1`` on failure; return ``0`` on success. This is the 382 equivalent of the Python statement ``o[key] = v``. 383 384 385 .. c:function:: int PyObject_DelItem(PyObject *o, PyObject *key) 386 387 Delete the mapping for *key* from *o*. Returns ``-1`` on failure. This is the 388 equivalent of the Python statement ``del o[key]``. 389 390 391 .. c:function:: int PyObject_AsFileDescriptor(PyObject *o) 392 393 Derives a file descriptor from a Python object. If the object is an integer or 394 long integer, its value is returned. If not, the object's :meth:`fileno` method 395 is called if it exists; the method must return an integer or long integer, which 396 is returned as the file descriptor value. Returns ``-1`` on failure. 397 398 399 .. c:function:: PyObject* PyObject_Dir(PyObject *o) 400 401 This is equivalent to the Python expression ``dir(o)``, returning a (possibly 402 empty) list of strings appropriate for the object argument, or *NULL* if there 403 was an error. If the argument is *NULL*, this is like the Python ``dir()``, 404 returning the names of the current locals; in this case, if no execution frame 405 is active then *NULL* is returned but :c:func:`PyErr_Occurred` will return false. 406 407 408 .. c:function:: PyObject* PyObject_GetIter(PyObject *o) 409 410 This is equivalent to the Python expression ``iter(o)``. It returns a new 411 iterator for the object argument, or the object itself if the object is already 412 an iterator. Raises :exc:`TypeError` and returns *NULL* if the object cannot be 413 iterated. 414