PyObject中的类型对象:
struct _typeobject
{
PyObject_VAR_HEAD
char *tp_name;
int tp_basicsize, tp_itemsize;
// 底下就是一大堆函数指针
...
} PyTypeObject
其中主要包含四类内容:
类型名称 内部使用或用于调试
分配空间大小tp_basicsize tp_itemsize
操作 函数指针
类型的类型
确定了一个对象的类型对象,则可知道它所包含的操作
类型对象的类型呢?因为PyTypeObject也是个对象,它的头部的类型对象指针则指向一个特殊的PyTypeObject对象 PyType_Type
PyTypeObject PyType_Type =
{
PyObject_HEAD_INIT(&PyType_Type)
0,
"type",
sizeof(PyHeapTypeObject),
sizeof(PyMemberDef),
...
}
综上,举例:
a = 2
a则为一个int实例对象,它的类型是int类型对象
而对于每个类型对象,包括用户自定义的类型的类型都是type类型对象,在python中还可称之为metaclass
在c语言中的说法
一个int对象,它的类型是PyInt_Type,而对于它的类型PyInt_Type来说,PyInt_Type的类型是PyType_Type,PyType_Type的类型则是指向自身PyType_Type