Object Protocol
===============
`int PyObject_Print(PyObject *o, FILE *fp, int flags)'
Print an object O, on file FP. Returns `-1' on error. The flags
argument is used to enable certain printing options. The only
option currently supported is `Py_PRINT_RAW'; if given, the
`str()' of the object is written instead of the `repr()'.
`int PyObject_HasAttrString(PyObject *o, char *attr_name)'
Returns `1' if O has the attribute ATTR_NAME, and `0' otherwise.
This is equivalent to the Python expression `hasattr(O,
ATTR_NAME)'. This function always succeeds.
`PyObject* PyObject_GetAttrString(PyObject *o, char *attr_name)'
Retrieve an attribute named ATTR_NAME from object O. Returns the
attribute value on success, or `NULL' on failure. This is the
equivalent of the Python expression `O.ATTR_NAME'.
`int PyObject_HasAttr(PyObject *o, PyObject *attr_name)'
Returns `1' if O has the attribute ATTR_NAME, and `0' otherwise.
This is equivalent to the Python expression `hasattr(O,
ATTR_NAME)'. This function always succeeds.
`PyObject* PyObject_GetAttr(PyObject *o, PyObject *attr_name)'
Retrieve an attribute named ATTR_NAME from object O. Returns the
attribute value on success, or `NULL' on failure. This is the
equivalent of the Python expression `O.ATTR_NAME'.
`int PyObject_SetAttrString(PyObject *o, char *attr_name, PyObject *v)'
Set the value of the attribute named ATTR_NAME, for object O, to
the value V. Returns `-1' on failure. This is the equivalent of
the Python statement `O.ATTR_NAME = V'.
`int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v)'
Set the value of the attribute named ATTR_NAME, for object O, to
the value V. Returns `-1' on failure. This is the equivalent of
the Python statement `O.ATTR_NAME = V'.
`int PyObject_DelAttrString(PyObject *o, char *attr_name)'
Delete attribute named ATTR_NAME, for object O. Returns `-1' on
failure. This is the equivalent of the Python statement: `del
O.ATTR_NAME'.
`int PyObject_DelAttr(PyObject *o, PyObject *attr_name)'
Delete attribute named ATTR_NAME, for object O. Returns `-1' on
failure. This is the equivalent of the Python statement `del
O.ATTR_NAME'.
`int PyObject_Cmp(PyObject *o1, PyObject *o2, int *result)'
Compare the values of O1 and O2 using a routine provided by O1, if
one exists, otherwise with a routine provided by O2. The result
of the comparison is returned in RESULT. Returns `-1' on failure.
This is the equivalent of the Python statement `RESULT = cmp(O1,
O2)'.
`int PyObject_Compare(PyObject *o1, PyObject *o2)'
Compare the values of O1 and O2 using a routine provided by O1, if
one exists, otherwise with a routine provided by O2. Returns the
result of the comparison on success. On error, the value returned
is undefined; use `PyErr_Occurred()' to detect an error. This is
equivalent to the Python expression `cmp(O1, O2)'.
`PyObject* PyObject_Repr(PyObject *o)'
Compute a string representation of object O. Returns the string
representation on success, `NULL' on failure. This is the
equivalent of the Python expression `repr(O)'. Called by the
`repr()' built-in function and by reverse quotes.
`PyObject* PyObject_Str(PyObject *o)'
Compute a string representation of object O. Returns the string
representation on success, `NULL' on failure. This is the
equivalent of the Python expression `str(O)'. Called by the
`str()' built-in function and by the `print' statement.
`PyObject* PyObject_Unicode(PyObject *o)'
Compute a Unicode string representation of object O. Returns the
Unicode string representation on success, `NULL' on failure. This
is the equivalent of the Python expression `unistr(O)'. Called by
the `unistr()' built-in function.
`int PyObject_IsInstance(PyObject *inst, PyObject *cls)'
Return `1' if INST is an instance of the class CLS or a subclass
of CLS. If CLS is a type object rather than a class object,
`PyObject_IsInstance()' returns `1' if INST is of type CLS. If
INST is not a class instance and CLS is neither a type object or
class object, INST must have a `__class__' attribute -- the class
relationship of the value of that attribute with CLS will be used
to determine the result of this function. _Added in Python
version 2.1_
Subclass determination is done in a fairly straightforward way, but
includes a wrinkle that implementors of extensions to the class system
may want to be aware of. If `A' and `B' are class objects, `B' is a
subclass of `A' if it inherits from `A' either directly or indirectly.
If either is not a class object, a more general mechanism is used to
determine the class relationship of the two objects. When testing if B
is a subclass of A, if A is B, `PyObject_IsSubclass()' returns true.
If A and B are different objects, B's `__bases__' attribute is searched
in a depth-first fashion for A -- the presence of the `__bases__'
attribute is considered sufficient for this determination.
`int PyObject_IsSubclass(PyObject *derived, PyObject *cls)'
Returns `1' if the class DERIVED is identical to or derived from
the class CLS, otherwise returns `0'. In case of an error,
returns `-1'. If either DERIVED or CLS is not an actual class
object, this function uses the generic algorithm described above.
_Added in Python version 2.1_
`int PyCallable_Check(PyObject *o)'
Determine if the object O is callable. Return `1' if the object
is callable and `0' otherwise. This function always succeeds.
`PyObject* PyObject_CallObject(PyObject *callable_object, PyObject *args)'
Call a callable Python object CALLABLE_OBJECT, with arguments
given by the tuple ARGS. If no arguments are needed, then ARGS
may be `NULL'. Returns the result of the call on success, or
`NULL' on failure. This is the equivalent of the Python
expression `apply(CALLABLE_OBJECT, ARGS)'.
`PyObject* PyObject_CallFunction(PyObject *callable_object, char *format, ...)'
Call a callable Python object CALLABLE_OBJECT, with a variable
number of C arguments. The C arguments are described using a
`Py_BuildValue()' style format string. The format may be `NULL',
indicating that no arguments are provided. Returns the result of
the call on success, or `NULL' on failure. This is the equivalent
of the Python expression `apply(CALLABLE_OBJECT, ARGS)'.
`PyObject* PyObject_CallMethod(PyObject *o, char *method, char *format, ...)'
Call the method named M of object O with a variable number of C
arguments. The C arguments are described by a `Py_BuildValue()'
format string. The format may be `NULL', indicating that no
arguments are provided. Returns the result of the call on success,
or `NULL' on failure. This is the equivalent of the Python
expression `O.METHOD(ARGS)'. Note that special method names, such
as `__add__()', `__getitem__()', and so on are not supported. The
specific abstract-object routines for these must be used.
`int PyObject_Hash(PyObject *o)'
Compute and return the hash value of an object O. On failure,
return `-1'. This is the equivalent of the Python expression
`hash(O)'.
`int PyObject_IsTrue(PyObject *o)'
Returns `1' if the object O is considered to be true, and `0'
otherwise. This is equivalent to the Python expression `not not O'.
This function always succeeds.
`PyObject* PyObject_Type(PyObject *o)'
On success, returns a type object corresponding to the object type
of object O. On failure, returns `NULL'. This is equivalent to
the Python expression `type(O)'.
`int PyObject_Length(PyObject *o)'
Return the length of object O. If the object O provides both
sequence and mapping protocols, the sequence length is returned.
On error, `-1' is returned. This is the equivalent to the Python
expression `len(O)'.
`PyObject* PyObject_GetItem(PyObject *o, PyObject *key)'
Return element of O corresponding to the object KEY or `NULL' on
failure. This is the equivalent of the Python expression `O[KEY]'.
`int PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v)'
Map the object KEY to the value V. Returns `-1' on failure. This
is the equivalent of the Python statement `O[KEY] = V'.
`int PyObject_DelItem(PyObject *o, PyObject *key)'
Delete the mapping for KEY from O. Returns `-1' on failure. This
is the equivalent of the Python statement `del O[KEY]'.
`int PyObject_AsFileDescriptor(PyObject *o)'
Derives a file-descriptor from a Python object. If the object is
an integer or long integer, its value is returned. If not, the
object's `fileno()' method is called if it exists; the method must
return an integer or long integer, which is returned as the file
descriptor value. Returns `-1' on failure.