欢迎光临散文网 会员登陆 & 注册

Python源码分析(二):PyObject的定义

2023-02-22 22:08 作者:StepfenShawn  | 我要投稿

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定义出来的, 后面再对各个对象慢慢研究吧。。。


Python源码分析(二):PyObject的定义的评论 (共 条)

分享到微博请遵守国家法律