如何通过C-API将方法动态添加到我的模块中?我有许多函数需要注册,但它们不在同一个数组中。我假设我可以使用NULL方法表初始化模块,因为文档中说这是可能的。
PyObject *mymod = Py_InitModule("my", NULL);要一次添加一个方法的函数的名称是什么?
发布于 2011-07-04 05:10:04
基本上,您必须首先获得模块字典:
d = PyModule_GetDict(m);将模块名称存储在PyString对象中:
n = PyString_FromString("modname");然后正确填充PyMethodDef结构ml并创建一个新的callable:
v = PyCFunction_NewEx(&ml, (PyObject*)NULL, n);并将这个由函数名指定的可调用键添加到模块dict中:
PyDict_SetItemString(d, ml->ml_name, v);我显然跳过了所有相关的错误检查。
所有这些都是我对Py_InitModule4功能的解释(Py_InitModule是一个使用默认参数调用Py_InitModule4的宏)。
https://stackoverflow.com/questions/6565175
复制相似问题