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函數。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容