1 .. highlightlang:: c 2 3 .. _object: 4 5 Object 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 37 .. c:function:: int PyObject_HasAttrString(PyObject *o, const char *attr_name) 38 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 44 .. c:function:: PyObject* PyObject_GetAttr(PyObject *o, PyObject *attr_name) 45 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 51 .. c:function:: PyObject* PyObject_GetAttrString(PyObject *o, const char *attr_name) 52 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 58 .. c:function:: PyObject* PyObject_GenericGetAttr(PyObject *o, PyObject *name) 59 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 63 :attr:`~object.__dict__` (if present). As outlined in :ref:`descriptors`, 64 data descriptors take preference over instance attributes, while non-data 65 descriptors don't. Otherwise, an :exc:`AttributeError` is raised. 66 67 68 .. c:function:: int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v) 69 70 Set the value of the attribute named *attr_name*, for object *o*, to the value 71 *v*. Raise an exception and return ``-1`` on failure; 72 return ``0`` on success. This is the equivalent of the Python statement 73 ``o.attr_name = v``. 74 75 If *v* is *NULL*, the attribute is deleted, however this feature is 76 deprecated in favour of using :c:func:`PyObject_DelAttr`. 77 78 79 .. c:function:: int PyObject_SetAttrString(PyObject *o, const char *attr_name, PyObject *v) 80 81 Set the value of the attribute named *attr_name*, for object *o*, to the value 82 *v*. Raise an exception and return ``-1`` on failure; 83 return ``0`` on success. This is the equivalent of the Python statement 84 ``o.attr_name = v``. 85 86 If *v* is *NULL*, the attribute is deleted, however this feature is 87 deprecated in favour of using :c:func:`PyObject_DelAttrString`. 88 89 90 .. c:function:: int PyObject_GenericSetAttr(PyObject *o, PyObject *name, PyObject *value) 91 92 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 95 dictionary of classes in the object's MRO, and if found it takes preference 96 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. 100 101 102 .. c:function:: int PyObject_DelAttr(PyObject *o, PyObject *attr_name) 103 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 108 .. c:function:: int PyObject_DelAttrString(PyObject *o, const char *attr_name) 109 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 114 .. c:function:: PyObject* PyObject_GenericGetDict(PyObject *o, void *context) 115 116 A generic implementation for the getter of a ``__dict__`` descriptor. It 117 creates the dictionary if necessary. 118 119 .. versionadded:: 3.3 120 121 122 .. c:function:: int PyObject_GenericSetDict(PyObject *o, void *context) 123 124 A generic implementation for the setter of a ``__dict__`` descriptor. This 125 implementation does not allow the dictionary to be deleted. 126 127 .. versionadded:: 3.3 128 129 130 .. c:function:: PyObject* PyObject_RichCompare(PyObject *o1, PyObject *o2, int opid) 131 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 140 .. c:function:: int PyObject_RichCompareBool(PyObject *o1, PyObject *o2, int opid) 141 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 150 .. 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`. 153 154 .. c:function:: PyObject* PyObject_Repr(PyObject *o) 155 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 160 Python expression ``repr(o)``. Called by the :func:`repr` built-in function. 161 162 .. versionchanged:: 3.4 163 This function now includes a debug assertion to help ensure that it 164 does not silently discard an active exception. 165 166 .. c:function:: PyObject* PyObject_ASCII(PyObject *o) 167 168 .. index:: builtin: ascii 169 170 As :c:func:`PyObject_Repr`, compute a string representation of object *o*, but 171 escape the non-ASCII characters in the string returned by 172 :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. 174 Called by the :func:`ascii` built-in function. 175 176 .. index:: string; PyObject_Str (C function) 177 178 179 .. c:function:: PyObject* PyObject_Str(PyObject *o) 180 181 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 186 .. versionchanged:: 3.4 187 This function now includes a debug assertion to help ensure that it 188 does not silently discard an active exception. 189 190 .. c:function:: PyObject* PyObject_Bytes(PyObject *o) 191 192 .. index:: builtin: bytes 193 194 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. 199 200 201 .. c:function:: int PyObject_IsSubclass(PyObject *derived, PyObject *cls) 202 203 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 216 class, are considered classes. However, objects can override this by having 217 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). 239 240 241 .. c:function:: int PyCallable_Check(PyObject *o) 242 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 247 .. c:function:: PyObject* PyObject_Call(PyObject *callable_object, PyObject *args, PyObject *kw) 248 249 Call a callable Python object *callable_object*, with arguments given by the 250 tuple *args*, and named arguments given by the dictionary *kw*. If no named 251 arguments are needed, *kw* may be *NULL*. *args* must not be *NULL*, use an 252 empty tuple if no arguments are needed. Returns the result of the call on 253 success, or *NULL* on failure. This is the equivalent of the Python expression 254 ``callable_object(*args, **kw)``. 255 256 257 .. c:function:: PyObject* PyObject_CallObject(PyObject *callable_object, PyObject *args) 258 259 Call a callable Python object *callable_object*, with arguments given by the 260 tuple *args*. If no arguments are needed, then *args* may be *NULL*. Returns 261 the result of the call on success, or *NULL* on failure. This is the equivalent 262 of the Python expression ``callable_object(*args)``. 263 264 265 .. c:function:: PyObject* PyObject_CallFunction(PyObject *callable, const char *format, ...) 266 267 Call a callable Python object *callable*, with a variable number of C arguments. 268 The C arguments are described using a :c:func:`Py_BuildValue` style format 269 string. The format may be *NULL*, indicating that no arguments are provided. 270 Returns the result of the call on success, or *NULL* on failure. This is the 271 equivalent of the Python expression ``callable(*args)``. Note that if you only 272 pass :c:type:`PyObject \*` args, :c:func:`PyObject_CallFunctionObjArgs` is a 273 faster alternative. 274 275 .. versionchanged:: 3.4 276 The type of *format* was changed from ``char *``. 277 278 279 .. c:function:: PyObject* PyObject_CallMethod(PyObject *o, const char *method, const char *format, ...) 280 281 Call the method named *method* of object *o* with a variable number of C 282 arguments. The C arguments are described by a :c:func:`Py_BuildValue` format 283 string that should produce a tuple. The format may be *NULL*, indicating that 284 no arguments are provided. Returns the result of the call on success, or *NULL* 285 on failure. This is the equivalent of the Python expression ``o.method(args)``. 286 Note that if you only pass :c:type:`PyObject \*` args, 287 :c:func:`PyObject_CallMethodObjArgs` is a faster alternative. 288 289 .. versionchanged:: 3.4 290 The types of *method* and *format* were changed from ``char *``. 291 292 293 .. c:function:: PyObject* PyObject_CallFunctionObjArgs(PyObject *callable, ..., NULL) 294 295 Call a callable Python object *callable*, with a variable number of 296 :c:type:`PyObject\*` arguments. The arguments are provided as a variable number 297 of parameters followed by *NULL*. Returns the result of the call on success, or 298 *NULL* on failure. 299 300 301 .. c:function:: PyObject* PyObject_CallMethodObjArgs(PyObject *o, PyObject *name, ..., NULL) 302 303 Calls a method of the object *o*, where the name of the method is given as a 304 Python string object in *name*. It is called with a variable number of 305 :c:type:`PyObject\*` arguments. The arguments are provided as a variable number 306 of parameters followed by *NULL*. Returns the result of the call on success, or 307 *NULL* on failure. 308 309 310 .. c:function:: Py_hash_t PyObject_Hash(PyObject *o) 311 312 .. index:: builtin: hash 313 314 Compute and return the hash value of an object *o*. On failure, return ``-1``. 315 This is the equivalent of the Python expression ``hash(o)``. 316 317 .. versionchanged:: 3.2 318 The return type is now Py_hash_t. This is a signed integer the same size 319 as Py_ssize_t. 320 321 322 .. c:function:: Py_hash_t PyObject_HashNotImplemented(PyObject *o) 323 324 Set a :exc:`TypeError` indicating that ``type(o)`` is not hashable and return ``-1``. 325 This function receives special treatment when stored in a ``tp_hash`` slot, 326 allowing a type to explicitly indicate to the interpreter that it is not 327 hashable. 328 329 330 .. c:function:: int PyObject_IsTrue(PyObject *o) 331 332 Returns ``1`` if the object *o* is considered to be true, and ``0`` otherwise. 333 This is equivalent to the Python expression ``not not o``. On failure, return 334 ``-1``. 335 336 337 .. c:function:: int PyObject_Not(PyObject *o) 338 339 Returns ``0`` if the object *o* is considered to be true, and ``1`` otherwise. 340 This is equivalent to the Python expression ``not o``. On failure, return 341 ``-1``. 342 343 344 .. c:function:: PyObject* PyObject_Type(PyObject *o) 345 346 .. index:: builtin: type 347 348 When *o* is non-*NULL*, returns a type object corresponding to the object type 349 of object *o*. On failure, raises :exc:`SystemError` and returns *NULL*. This 350 is equivalent to the Python expression ``type(o)``. This function increments the 351 reference count of the return value. There's really no reason to use this 352 function instead of the common expression ``o->ob_type``, which returns a 353 pointer of type :c:type:`PyTypeObject\*`, except when the incremented reference 354 count is needed. 355 356 357 .. c:function:: int PyObject_TypeCheck(PyObject *o, PyTypeObject *type) 358 359 Return true if the object *o* is of type *type* or a subtype of *type*. Both 360 parameters must be non-*NULL*. 361 362 363 .. c:function:: Py_ssize_t PyObject_Length(PyObject *o) 364 Py_ssize_t PyObject_Size(PyObject *o) 365 366 .. index:: builtin: len 367 368 Return the length of object *o*. If the object *o* provides either the sequence 369 and mapping protocols, the sequence length is returned. On error, ``-1`` is 370 returned. This is the equivalent to the Python expression ``len(o)``. 371 372 373 .. c:function:: Py_ssize_t PyObject_LengthHint(PyObject *o, Py_ssize_t default) 374 375 Return an estimated length for the object *o*. First try to return its 376 actual length, then an estimate using :meth:`~object.__length_hint__`, and 377 finally return the default value. On error return ``-1``. This is the 378 equivalent to the Python expression ``operator.length_hint(o, default)``. 379 380 .. versionadded:: 3.4 381 382 383 .. c:function:: PyObject* PyObject_GetItem(PyObject *o, PyObject *key) 384 385 Return element of *o* corresponding to the object *key* or *NULL* on failure. 386 This is the equivalent of the Python expression ``o[key]``. 387 388 389 .. c:function:: int PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v) 390 391 Map the object *key* to the value *v*. Raise an exception and 392 return ``-1`` on failure; return ``0`` on success. This is the 393 equivalent of the Python statement ``o[key] = v``. 394 395 396 .. c:function:: int PyObject_DelItem(PyObject *o, PyObject *key) 397 398 Delete the mapping for *key* from *o*. Returns ``-1`` on failure. This is the 399 equivalent of the Python statement ``del o[key]``. 400 401 402 .. c:function:: PyObject* PyObject_Dir(PyObject *o) 403 404 This is equivalent to the Python expression ``dir(o)``, returning a (possibly 405 empty) list of strings appropriate for the object argument, or *NULL* if there 406 was an error. If the argument is *NULL*, this is like the Python ``dir()``, 407 returning the names of the current locals; in this case, if no execution frame 408 is active then *NULL* is returned but :c:func:`PyErr_Occurred` will return false. 409 410 411 .. c:function:: PyObject* PyObject_GetIter(PyObject *o) 412 413 This is equivalent to the Python expression ``iter(o)``. It returns a new 414 iterator for the object argument, or the object itself if the object is already 415 an iterator. Raises :exc:`TypeError` and returns *NULL* if the object cannot be 416 iterated. 417