1
我將如何通過C-API動態添加方法到我的模塊?我有很多我需要註冊的函數,它們不在同一個數組中。我假設我可以使用NULL方法表初始化模塊,因爲文檔說這是可能的。通過C-API向模塊添加新命令?
PyObject *mymod = Py_InitModule("my", NULL);
什麼是一次添加我的方法一個函數的名稱。
我將如何通過C-API動態添加方法到我的模塊?我有很多我需要註冊的函數,它們不在同一個數組中。我假設我可以使用NULL方法表初始化模塊,因爲文檔說這是可能的。通過C-API向模塊添加新命令?
PyObject *mymod = Py_InitModule("my", NULL);
什麼是一次添加我的方法一個函數的名稱。
基本上,你必須得到阿霍德模塊字典的第一:
d = PyModule_GetDict(m);
存放在PyString對象模塊名稱:
n = PyString_FromString("modname");
然後適當填充PyMethodDef結構ml
和創建一個新的可調用對象:
v = PyCFunction_NewEx(&ml, (PyObject*)NULL, n);
並添加這個可調用鍵的功能名稱模塊字典:
PyDict_SetItemString(d, ml->ml_name, v);
我明顯地跳過了所有相關的錯誤檢查。
這一切都是我的什麼Py_InitModule4
做解釋(Py_InitModule
是一個宏調用Py_InitModule4
使用默認參數)。
非常感謝。 – Juan