Home | History | Annotate | Download | only in c-api
      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