Class and Instance Objects
**************************

Note that the class objects described here represent old-style
classes, which will go away in Python 3. When creating new types for
extension modules, you will want to work with type objects (section
Type Objects).

PyClassObject

   The C structure of the objects used to describe built-in classes.

PyObject* PyClass_Type

   This is the type object for class objects; it is the same object as
   "types.ClassType" in the Python layer.

int PyClass_Check(PyObject *o)

   Return true if the object *o* is a class object, including
   instances of types derived from the standard class object.  Return
   false in all other cases.

int PyClass_IsSubclass(PyObject *klass, PyObject *base)

   Return true if *klass* is a subclass of *base*. Return false in all
   other cases.

There are very few functions specific to instance objects.

PyTypeObject PyInstance_Type

   Type object for class instances.

int PyInstance_Check(PyObject *obj)

   Return true if *obj* is an instance.

PyObject* PyInstance_New(PyObject *class, PyObject *arg, PyObject *kw)
    *Return value: New reference.*

   Create a new instance of a specific class.  The parameters *arg*
   and *kw* are used as the positional and keyword parameters to the
   object’s constructor.

PyObject* PyInstance_NewRaw(PyObject *class, PyObject *dict)
    *Return value: New reference.*

   Create a new instance of a specific class without calling its
   constructor. *class* is the class of new object.  The *dict*
   parameter will be used as the object’s "__dict__"; if *NULL*, a new
   dictionary will be created for the instance.
