PyObject中的類型對(duì)象:
struct _typeobject
{
PyObject_VAR_HEAD
char *tp_name;
int tp_basicsize, tp_itemsize;
// 底下就是一大堆函數(shù)指針
...
} PyTypeObject
其中主要包含四類內(nèi)容:
類型名稱 內(nèi)部使用或用于調(diào)試
分配空間大小tp_basicsize tp_itemsize
操作 函數(shù)指針
類型的類型
確定了一個(gè)對(duì)象的類型對(duì)象,則可知道它所包含的操作
類型對(duì)象的類型呢?因?yàn)镻yTypeObject也是個(gè)對(duì)象,它的頭部的類型對(duì)象指針則指向一個(gè)特殊的PyTypeObject對(duì)象 PyType_Type
PyTypeObject PyType_Type =
{
PyObject_HEAD_INIT(&PyType_Type)
0,
"type",
sizeof(PyHeapTypeObject),
sizeof(PyMemberDef),
...
}
綜上,舉例:
a = 2
a則為一個(gè)int實(shí)例對(duì)象,它的類型是int類型對(duì)象
而對(duì)于每個(gè)類型對(duì)象,包括用戶自定義的類型的類型都是type類型對(duì)象,在python中還可稱之為metaclass
在c語(yǔ)言中的說(shuō)法
一個(gè)int對(duì)象,它的類型是PyInt_Type,而對(duì)于它的類型PyInt_Type來(lái)說(shuō),PyInt_Type的類型是PyType_Type,PyType_Type的類型則是指向自身PyType_Type