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