Python源碼分析(二):PyObject的定義
2023-02-22 22:08 作者:StepfenShawn | 我要投稿
PyObject 實(shí)際上是_object結(jié)構(gòu)體:
_object 包含一個(gè) ob_refcnt (垃圾回收的引用計(jì)數(shù)器)和 ob_type:
我們看看 _PyObject_HEAD_EXTRA 是怎么定義的,如果 Py_TRACE_REFS 定義的話, 我們會(huì)發(fā)現(xiàn)是一個(gè)鏈表, 可是正常情況下這個(gè)宏是不定義的:
我們來看看PyVarObject是怎么定義的:
它包含了 ob_base(父類) 和 ob_size, 看來在Python的世界觀中一切皆為PyObject.
每當(dāng)我們實(shí)例化任意一個(gè)Python對(duì)象,在其占用的堆內(nèi)存區(qū)塊的首個(gè)字節(jié)就包含一個(gè)PyObject定義的副本,?這也許是c語言實(shí)現(xiàn)面向?qū)ο蟮睦^承的方法吧!
可以說所有Python的對(duì)象都是PyObject定義出來的, 后面再對(duì)各個(gè)對(duì)象慢慢研究吧。。。
標(biāo)簽: