鍍金池/ 問(wèn)答/Python/ 如何查看Cpython源碼比較合理?

如何查看Cpython源碼比較合理?

背景:無(wú)意中想要搞清楚staticmethod的實(shí)現(xiàn)方式,于是想到了可以用帶有__get__的類來(lái)實(shí)現(xiàn),但是并不清楚cpython里面原版是怎么實(shí)現(xiàn)的,有點(diǎn)好奇于是grep了一下源碼,發(fā)現(xiàn)在funcobject.h里有提到:

/* The classmethod and staticmethod types lives here, too */
PyAPI_DATA(PyTypeObject) PyClassMethod_Type;
PyAPI_DATA(PyTypeObject) PyStaticMethod_Type;

PyAPI_FUNC(PyObject *) PyClassMethod_New(PyObject *);
PyAPI_FUNC(PyObject *) PyStaticMethod_New(PyObject *);

但只有個(gè)函數(shù)頭,也沒(méi)什么用,就斷在這里了。。。于是上來(lái)請(qǐng)教:

如何尋找相關(guān)python功能的具體實(shí)現(xiàn)才比較靠譜呢?(靠譜指的是“我確定這樣找是能找到的,且不會(huì)有更好的尋找方案”)
或者說(shuō),在我想深入弄清楚一個(gè)功能的運(yùn)行機(jī)制時(shí),有什么一般性的套路步驟可以遵循?

回答
編輯回答
魚(yú)梓

cpython工程挺大的,自己蒙頭看會(huì)困惑且無(wú)從下手,可以借助下別人的閱讀筆記,比如我的筆記哈哈哈哈:https://www.hongweipeng.com/i...

2017年1月24日 03:14