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    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