类型

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.元类 1.1.1类也是对象 在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。在Python中这...
    TENG书阅读 1,337评论 0 3
  • 2014年的苹果全球开发者大会(WWDC),当Craig Federighi向全世界宣布“We have new ...
    yeshenlong520阅读 2,323评论 0 9
  • 文/小新菜菜 01. 大学校友小D,这么称呼她是因为人家上围傲人真的有D,秒杀我们一众土地贫瘠的太平公主。 真是有...
    菜小新阅读 669评论 0 1
  • 爱情是一杯毒酒,许多人,含着笑,义无反顾地饮下去。不是因为傻,而是身不由己。 世界这么大,过客这么多,好不容易才遇...
    柚子枇阅读 1,084评论 9 11