我正在嘗試使用Python C API來定義一個模塊內的新類,該模塊可以將用C編寫的某些功能暴露給Python代碼。我特別想要以類的形式而不是一組模塊函數。如何使用C API在Python中定義新類型(類)?
但是,在官方文檔中,我找不到有關此特定任務的任何內容。我能找到的最接近的是PyClass_New函數(在Python.h頭文件中),但在官方文檔中沒有提及它,所以我認爲它不應該被使用。
那麼,從C代碼定義一個新的Python類的正確方法是什麼?
謝謝。
我正在嘗試使用Python C API來定義一個模塊內的新類,該模塊可以將用C編寫的某些功能暴露給Python代碼。我特別想要以類的形式而不是一組模塊函數。如何使用C API在Python中定義新類型(類)?
但是,在官方文檔中,我找不到有關此特定任務的任何內容。我能找到的最接近的是PyClass_New函數(在Python.h頭文件中),但在官方文檔中沒有提及它,所以我認爲它不應該被使用。
那麼,從C代碼定義一個新的Python類的正確方法是什麼?
謝謝。
This part文檔(和周邊的)應該給你你需要的大部分信息。 xxsubtype.c資源提供了一個示例模塊,它定義了一個新類(作爲list
的子類,以便精確地顯示如何執行此操作),並且xxmodule.c顯示了(還有許多其他事情)以及如何定義新類型。
static PyObject* Request_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
可以幫助你,那麼你可以聲明PyTypeObject
變量來定義一個新的類。
請解釋你的答案! – Mazz 2017-04-21 09:49:58
謝謝,那就是我一直在尋找的東西,我不知道爲什麼「擴展Python」部分沒有提及這一點。 – user352864 2010-06-07 15:15:30