1.. highlightlang:: c 2 3.. _object: 4 5Object Protocol 6=============== 7 8 9.. 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 22.. c:function:: int PyObject_Print(PyObject *o, FILE *fp, int flags) 23 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 30.. c:function:: int PyObject_HasAttr(PyObject *o, PyObject *attr_name) 31 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 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 40 41.. c:function:: int PyObject_HasAttrString(PyObject *o, const char *attr_name) 42 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 47 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 52 53.. c:function:: PyObject* PyObject_GetAttr(PyObject *o, PyObject *attr_name) 54 55 Retrieve an attribute named *attr_name* from object *o*. Returns the attribute 56 value on success, or *NULL* on failure. This is the equivalent of the Python 57 expression ``o.attr_name``. 58 59 60.. c:function:: PyObject* PyObject_GetAttrString(PyObject *o, const char *attr_name) 61 62 Retrieve an attribute named *attr_name* from object *o*. Returns the attribute 63 value on success, or *NULL* on failure. This is the equivalent of the Python 64 expression ``o.attr_name``. 65 66 67.. c:function:: PyObject* PyObject_GenericGetAttr(PyObject *o, PyObject *name) 68 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 72 :attr:`~object.__dict__` (if present). As outlined in :ref:`descriptors`, 73 data descriptors take preference over instance attributes, while non-data 74 descriptors don't. Otherwise, an :exc:`AttributeError` is raised. 75 76 77.. c:function:: int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v) 78 79 Set the value of the attribute named *attr_name*, for object *o*, to the value 80 *v*. Raise an exception and return ``-1`` on failure; 81 return ``0`` on success. This is the equivalent of the Python statement 82 ``o.attr_name = v``. 83 84 If *v* is *NULL*, the attribute is deleted, however this feature is 85 deprecated in favour of using :c:func:`PyObject_DelAttr`. 86 87 88.. c:function:: int PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v) 89 90 Set the value of the attribute named *attr_name*, for object *o*, to the value 91 *v*. Raise an exception and return ``-1`` on failure; 92 return ``0`` on success. This is the equivalent of the Python statement 93 ``o.attr_name = v``. 94 95 If *v* is *NULL*, the attribute is deleted, however this feature is 96 deprecated in favour of using :c:func:`PyObject_DelAttrString`. 97 98 99.. c:function:: int PyObject_GenericSetAttr(PyObject *o, PyObject *name, PyObject *value) 100 101 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 104 dictionary of classes in the object's MRO, and if found it takes preference 105 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. 109 110 111.. c:function:: int PyObject_DelAttr(PyObject *o, PyObject *attr_name) 112 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 117.. c:function:: int PyObject_DelAttrString(PyObject *o, const char *attr_name) 118 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 123.. c:function:: PyObject* PyObject_GenericGetDict(PyObject *o, void *context) 124 125 A generic implementation for the getter of a ``__dict__`` descriptor. It 126 creates the dictionary if necessary. 127 128 .. versionadded:: 3.3 129 130 131.. c:function:: int PyObject_GenericSetDict(PyObject *o, void *context) 132 133 A generic implementation for the setter of a ``__dict__`` descriptor. This 134 implementation does not allow the dictionary to be deleted. 135 136 .. versionadded:: 3.3 137 138 139.. c:function:: PyObject* PyObject_RichCompare(PyObject *o1, PyObject *o2, int opid) 140 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 146 to *opid*. Returns the value of the comparison on success, or *NULL* on failure. 147 148 149.. c:function:: int PyObject_RichCompareBool(PyObject *o1, PyObject *o2, int opid) 150 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 159.. 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`. 162 163.. c:function:: PyObject* PyObject_Repr(PyObject *o) 164 165 .. index:: builtin: repr 166 167 Compute a string representation of object *o*. Returns the string 168 representation on success, *NULL* on failure. This is the equivalent of the 169 Python expression ``repr(o)``. Called by the :func:`repr` built-in function. 170 171 .. versionchanged:: 3.4 172 This function now includes a debug assertion to help ensure that it 173 does not silently discard an active exception. 174 175.. c:function:: PyObject* PyObject_ASCII(PyObject *o) 176 177 .. index:: builtin: ascii 178 179 As :c:func:`PyObject_Repr`, compute a string representation of object *o*, but 180 escape the non-ASCII characters in the string returned by 181 :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. 183 Called by the :func:`ascii` built-in function. 184 185 .. index:: string; PyObject_Str (C function) 186 187 188.. c:function:: PyObject* PyObject_Str(PyObject *o) 189 190 Compute a string representation of object *o*. Returns the string 191 representation on success, *NULL* on failure. This is the equivalent of the 192 Python expression ``str(o)``. Called by the :func:`str` built-in function 193 and, therefore, by the :func:`print` function. 194 195 .. versionchanged:: 3.4 196 This function now includes a debug assertion to help ensure that it 197 does not silently discard an active exception. 198 199.. c:function:: PyObject* PyObject_Bytes(PyObject *o) 200 201 .. index:: builtin: bytes 202 203 Compute a bytes representation of object *o*. *NULL* is returned on 204 failure and a bytes object on success. This is equivalent to the Python 205 expression ``bytes(o)``, when *o* is not an integer. Unlike ``bytes(o)``, 206 a TypeError is raised when *o* is an integer instead of a zero-initialized 207 bytes object. 208 209 210.. c:function:: int PyObject_IsSubclass(PyObject *derived, PyObject *cls) 211 212 Return ``1`` if the class *derived* is identical to or derived from the class 213 *cls*, otherwise return ``0``. In case of an error, return ``-1``. 214 215 If *cls* is a tuple, the check will be done against every entry in *cls*. 216 The result will be ``1`` when at least one of the checks returns ``1``, 217 otherwise it will be ``0``. 218 219 If *cls* has a :meth:`~class.__subclasscheck__` method, it will be called to 220 determine the subclass status as described in :pep:`3119`. Otherwise, 221 *derived* is a subclass of *cls* if it is a direct or indirect subclass, 222 i.e. contained in ``cls.__mro__``. 223 224 Normally only class objects, i.e. instances of :class:`type` or a derived 225 class, are considered classes. However, objects can override this by having 226 a :attr:`__bases__` attribute (which must be a tuple of base classes). 227 228 229.. c:function:: int PyObject_IsInstance(PyObject *inst, PyObject *cls) 230 231 Return ``1`` if *inst* is an instance of the class *cls* or a subclass of 232 *cls*, or ``0`` if not. On error, returns ``-1`` and sets an exception. 233 234 If *cls* is a tuple, the check will be done against every entry in *cls*. 235 The result will be ``1`` when at least one of the checks returns ``1``, 236 otherwise it will be ``0``. 237 238 If *cls* has a :meth:`~class.__instancecheck__` method, it will be called to 239 determine the subclass status as described in :pep:`3119`. Otherwise, *inst* 240 is an instance of *cls* if its class is a subclass of *cls*. 241 242 An instance *inst* can override what is considered its class by having a 243 :attr:`__class__` attribute. 244 245 An object *cls* can override if it is considered a class, and what its base 246 classes are, by having a :attr:`__bases__` attribute (which must be a tuple 247 of base classes). 248 249 250.. c:function:: int PyCallable_Check(PyObject *o) 251 252 Determine if the object *o* is callable. Return ``1`` if the object is callable 253 and ``0`` otherwise. This function always succeeds. 254 255 256.. c:function:: PyObject* PyObject_Call(PyObject *callable, PyObject *args, PyObject *kwargs) 257 258 Call a callable Python object *callable*, with arguments given by the 259 tuple *args*, and named arguments given by the dictionary *kwargs*. 260 261 *args* must not be *NULL*, use an empty tuple if no arguments are needed. 262 If no named arguments are needed, *kwargs* can be *NULL*. 263 264 Returns the result of the call on success, or *NULL* on failure. 265 266 This is the equivalent of the Python expression: 267 ``callable(*args, **kwargs)``. 268 269 270.. c:function:: PyObject* PyObject_CallObject(PyObject *callable, PyObject *args) 271 272 Call a callable Python object *callable*, with arguments given by the 273 tuple *args*. If no arguments are needed, then *args* can be *NULL*. 274 275 Returns the result of the call on success, or *NULL* on failure. 276 277 This is the equivalent of the Python expression: ``callable(*args)``. 278 279 280.. c:function:: PyObject* PyObject_CallFunction(PyObject *callable, const char *format, ...) 281 282 Call a callable Python object *callable*, with a variable number of C arguments. 283 The C arguments are described using a :c:func:`Py_BuildValue` style format 284 string. The format can be *NULL*, indicating that no arguments are provided. 285 286 Returns the result of the call on success, or *NULL* on failure. 287 288 This is the equivalent of the Python expression: ``callable(*args)``. 289 290 Note that if you only pass :c:type:`PyObject \*` args, 291 :c:func:`PyObject_CallFunctionObjArgs` is a faster alternative. 292 293 .. versionchanged:: 3.4 294 The type of *format* was changed from ``char *``. 295 296 297.. c:function:: PyObject* PyObject_CallMethod(PyObject *obj, const char *name, const char *format, ...) 298 299 Call the method named *name* of object *obj* with a variable number of C 300 arguments. The C arguments are described by a :c:func:`Py_BuildValue` format 301 string that should produce a tuple. 302 303 The format can be *NULL*, indicating that no arguments are provided. 304 305 Returns the result of the call on success, or *NULL* on failure. 306 307 This is the equivalent of the Python expression: 308 ``obj.name(arg1, arg2, ...)``. 309 310 Note that if you only pass :c:type:`PyObject \*` args, 311 :c:func:`PyObject_CallMethodObjArgs` is a faster alternative. 312 313 .. versionchanged:: 3.4 314 The types of *name* and *format* were changed from ``char *``. 315 316 317.. c:function:: PyObject* PyObject_CallFunctionObjArgs(PyObject *callable, ..., NULL) 318 319 Call a callable Python object *callable*, with a variable number of 320 :c:type:`PyObject\*` arguments. The arguments are provided as a variable number 321 of parameters followed by *NULL*. 322 323 Returns the result of the call on success, or *NULL* on failure. 324 325 This is the equivalent of the Python expression: 326 ``callable(arg1, arg2, ...)``. 327 328 329.. c:function:: PyObject* PyObject_CallMethodObjArgs(PyObject *obj, PyObject *name, ..., NULL) 330 331 Calls a method of the Python object *obj*, where the name of the method is given as a 332 Python string object in *name*. It is called with a variable number of 333 :c:type:`PyObject\*` arguments. The arguments are provided as a variable number 334 of parameters followed by *NULL*. Returns the result of the call on success, or 335 *NULL* on failure. 336 337 338.. c:function:: Py_hash_t PyObject_Hash(PyObject *o) 339 340 .. index:: builtin: hash 341 342 Compute and return the hash value of an object *o*. On failure, return ``-1``. 343 This is the equivalent of the Python expression ``hash(o)``. 344 345 .. versionchanged:: 3.2 346 The return type is now Py_hash_t. This is a signed integer the same size 347 as Py_ssize_t. 348 349 350.. c:function:: Py_hash_t PyObject_HashNotImplemented(PyObject *o) 351 352 Set a :exc:`TypeError` indicating that ``type(o)`` is not hashable and return ``-1``. 353 This function receives special treatment when stored in a ``tp_hash`` slot, 354 allowing a type to explicitly indicate to the interpreter that it is not 355 hashable. 356 357 358.. c:function:: int PyObject_IsTrue(PyObject *o) 359 360 Returns ``1`` if the object *o* is considered to be true, and ``0`` otherwise. 361 This is equivalent to the Python expression ``not not o``. On failure, return 362 ``-1``. 363 364 365.. c:function:: int PyObject_Not(PyObject *o) 366 367 Returns ``0`` if the object *o* is considered to be true, and ``1`` otherwise. 368 This is equivalent to the Python expression ``not o``. On failure, return 369 ``-1``. 370 371 372.. c:function:: PyObject* PyObject_Type(PyObject *o) 373 374 .. index:: builtin: type 375 376 When *o* is non-*NULL*, returns a type object corresponding to the object type 377 of object *o*. On failure, raises :exc:`SystemError` and returns *NULL*. This 378 is equivalent to the Python expression ``type(o)``. This function increments the 379 reference count of the return value. There's really no reason to use this 380 function instead of the common expression ``o->ob_type``, which returns a 381 pointer of type :c:type:`PyTypeObject\*`, except when the incremented reference 382 count is needed. 383 384 385.. c:function:: int PyObject_TypeCheck(PyObject *o, PyTypeObject *type) 386 387 Return true if the object *o* is of type *type* or a subtype of *type*. Both 388 parameters must be non-*NULL*. 389 390 391.. c:function:: Py_ssize_t PyObject_Size(PyObject *o) 392 Py_ssize_t PyObject_Length(PyObject *o) 393 394 .. index:: builtin: len 395 396 Return the length of object *o*. If the object *o* provides either the sequence 397 and mapping protocols, the sequence length is returned. On error, ``-1`` is 398 returned. This is the equivalent to the Python expression ``len(o)``. 399 400 401.. c:function:: Py_ssize_t PyObject_LengthHint(PyObject *o, Py_ssize_t default) 402 403 Return an estimated length for the object *o*. First try to return its 404 actual length, then an estimate using :meth:`~object.__length_hint__`, and 405 finally return the default value. On error return ``-1``. This is the 406 equivalent to the Python expression ``operator.length_hint(o, default)``. 407 408 .. versionadded:: 3.4 409 410 411.. c:function:: PyObject* PyObject_GetItem(PyObject *o, PyObject *key) 412 413 Return element of *o* corresponding to the object *key* or *NULL* on failure. 414 This is the equivalent of the Python expression ``o[key]``. 415 416 417.. c:function:: int PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v) 418 419 Map the object *key* to the value *v*. Raise an exception and 420 return ``-1`` on failure; return ``0`` on success. This is the 421 equivalent of the Python statement ``o[key] = v``. 422 423 424.. c:function:: int PyObject_DelItem(PyObject *o, PyObject *key) 425 426 Remove the mapping for the object *key* from the object *o*. Return ``-1`` 427 on failure. This is equivalent to the Python statement ``del o[key]``. 428 429 430.. c:function:: PyObject* PyObject_Dir(PyObject *o) 431 432 This is equivalent to the Python expression ``dir(o)``, returning a (possibly 433 empty) list of strings appropriate for the object argument, or *NULL* if there 434 was an error. If the argument is *NULL*, this is like the Python ``dir()``, 435 returning the names of the current locals; in this case, if no execution frame 436 is active then *NULL* is returned but :c:func:`PyErr_Occurred` will return false. 437 438 439.. c:function:: PyObject* PyObject_GetIter(PyObject *o) 440 441 This is equivalent to the Python expression ``iter(o)``. It returns a new 442 iterator for the object argument, or the object itself if the object is already 443 an iterator. Raises :exc:`TypeError` and returns *NULL* if the object cannot be 444 iterated. 445