PyType_Type和PyBaseObject_TypePyObject和PyTypeObject内容的最后指出下图中对实例对象和类型对象的理解是不完全正确的,浮点类型对象全局唯一,Python在C语言层面实现过程中将其定义为一个全局静态变量,定义于Object/floatobject.c中,命名为PyFloat_Type。PyTypeObjectPyFloat_Type={PyVarObject_HEAD_INIT(&PyType_Type,0)"float",sizeof(PyFloatObject),0,(destructor)float_dealloc,...
继续阅读 >
分类:Python源码
PyType_Type和PyBaseObject_TypePyObject和PyTypeObject内容的最后指出下图中对实例对象和类型对象的理解是不完全正确的,浮点类型对象全局唯一,Python在C语言层面实现过程中将其定义为一个全局静态变量,定义于Object/floatobject.c中,命名为PyFloat_Type。PyTypeObjectPyFloat_Type={PyVarObject_HEAD_INIT(&PyType_Type,0)"float",sizeof(PyFloatObject),0,(destructor)float_dealloc,...
继续阅读 >
2021
09-04
09-04
Python源码学习之PyObject和PyTypeObject
前言Python是C语言实现的,因此Python对象在C语言层面应该是一个结构体,组织对象占用的内存。不同类型的对象,数据及行为均可能不同,因此可以大胆猜测:不同类型的对象由不同的结构体表示。对象也有一些共性,比如每个对象都需要有一个引用计数,用于实现垃圾回收机制。因此,还可以进一步猜测:表示对象的结构体有一个公共头部。一.实例对象的基石—PyObject和PyVarObjectPyObject和PyVarObject本质上是对象的头部信息。1.1...
继续阅读 >