summaryrefslogtreecommitdiffstats
path: root/Doc/c-api/class.rst
blob: 576af38ef8938306e5aded1ce13d77274fcda0ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
.. highlightlang:: c

.. _classobjects:

Class and Instance Objects
--------------------------

.. index:: object: class

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 :ref:`typeobjects`).


.. ctype:: PyClassObject

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


.. cvar:: PyObject* PyClass_Type

   .. index:: single: ClassType (in module types)

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


.. cfunction:: 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.


.. cfunction:: int PyClass_IsSubclass(PyObject *klass, PyObject *base)

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


.. index:: object: instance

There are very few functions specific to instance objects.


.. cvar:: PyTypeObject PyInstance_Type

   Type object for class instances.


.. cfunction:: int PyInstance_Check(PyObject *obj)

   Return true if *obj* is an instance.


.. cfunction:: PyObject* PyInstance_New(PyObject *class, PyObject *arg, PyObject *kw)

   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.


.. cfunction:: PyObject* PyInstance_NewRaw(PyObject *class, PyObject *dict)

   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 :attr:`__dict__`; if *NULL*, a new dictionary will be created for the
   instance.