假设我有一些包含函数foo的嵌入式python代码,获取对该函数的引用的最佳方法是什么(与PyObject_CallObject一起使用)?
一种方法是让一些功能手动或通过使用反射将每个功能与功能名称一起注册。这看起来有点矫枉过正。
另一种方法是创建一个“loader”函数,它接受函数名称并返回对函数的引用。更好,但我仍然需要使用C注册加载器功能。
我是否错过了更好的方法来做或不用写任何额外的python代码?
答案 0 :(得分:1)
阅读有关embedding Python的文档中的部分。我想你有一个包含该函数的模块的引用。 最后有一个例子,展示了如何从对象中获取函数引用。
pFunc = PyObject_GetAttrString(pModule, argv[2]);
/* pFunc is a new reference */
if (pFunc && PyCallable_Check(pFunc)) {
...
}
Py_XDECREF(pFunc);