当前位置:首页 > 行业资讯 >  > 正文
Python源码分析(二):PyObject的定义
来源:哔哩哔哩  时间:2023-02-22 22:13:49
字号:


(资料图片仅供参考)

PyObject 实际上是_object结构体:

_object 包含一个 ob_refcnt (垃圾回收的引用计数器)和 ob_type:

我们看看 _PyObject_HEAD_EXTRA 是怎么定义的,如果 Py_TRACE_REFS 定义的话, 我们会发现是一个链表, 可是正常情况下这个宏是不定义的:

我们来看看PyVarObject是怎么定义的:

它包含了 ob_base(父类) 和 ob_size, 看来在Python的世界观中一切皆为PyObject.

每当我们实例化任意一个Python对象,在其占用的堆内存区块的首个字节就包含一个PyObject定义的副本, 这也许是c语言实现面向对象的继承的方法吧!

可以说所有Python的对象都是PyObject定义出来的, 后面再对各个对象慢慢研究吧。。。

标签: 垃圾回收 面向对象的 这也许是