四、再谈PyTypeObject

PyTypeObject定义:

[object.h]
typedef struct _typeobject {
    PyObject_VAR_HEAD
    ......... 
    ........
} PyTypeObject;

Python中万物皆对象。PyTypeObject其中也有PyObject_VAR_HEAD,说明是一个对象。PyTypeObject因为包含大量类型信息,又被称为类型对象,那么这个对象,是什么类型?

[typeobject.c]
PyTypeObject PyType_Type = {
    PyVarObject_HEAD_INIT(&PyType_Type, 0)
    "type",                                     /* tp_name */
    sizeof(PyHeapTypeObject),                   /* tp_basicsize */
    sizeof(PyMemberDef),                        /* tp_itemsize */
    (destructor)type_dealloc,                   /* tp_dealloc */
    ......
    ......
    PyObject_GC_Del,                            /* tp_free */
    (inquiry)type_is_gc,                        /* tp_is_gc */
};

答案是PyType_Type,看下图就明白了。


你可能感兴趣的:(Python源码剖析)