python对象实现

所有Python对象都直接或间接继承自PyObject,PyObject的定义很简单:

struct _object {
    Py_ssize_t ob_refcnt; // 引用计数
    struct PyTypeObject *ob_type; // 类型对象指针
} PyObject;

引用计数决定对象的生存。当ob_refcnt为0时销毁对象。
Python类型对象(PyTypeObject)里的成员就是充当C++中的虚函数表

PyTypeObject也是一种对象,同样继承自PyObject,其中除了记录对象名和对象大小等数据之外就是一系列的函数指针。包括怎么回收对象内存的析构函数,怎么打印对象,属性相关函数,以及数值型对象(Number)函数系、序列对象(Sequence)函数系、映射对象(Mapping)函数系等等一系列函数。不同类型的对象根据自身需要设置函数指针的值。比如整数对象PyIntObject只有Number函数,而没有Sequence和Mapping函数。

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

推荐阅读更多精彩内容