假设我有一些包含函数 foo 的嵌入式 python 代码,获取对该函数的引用(用于 PyObject_CallObject)的最佳方法是什么?
一种方法是让一些函数手动或通过使用反射来注册每个函数以及函数名。这似乎有点矫枉过正。
另一种方法是创建一个“加载器”函数,该函数采用函数名称并返回对该函数的引用。更好,但我仍然必须用 C 注册加载程序函数。
我是否错过了一种更好的方法来做到这一点,无论是否需要编写任何额外的 python 代码?
假设我有一些包含函数 foo 的嵌入式 python 代码,获取对该函数的引用(用于 PyObject_CallObject)的最佳方法是什么?
一种方法是让一些函数手动或通过使用反射来注册每个函数以及函数名。这似乎有点矫枉过正。
另一种方法是创建一个“加载器”函数,该函数采用函数名称并返回对该函数的引用。更好,但我仍然必须用 C 注册加载程序函数。
我是否错过了一种更好的方法来做到这一点,无论是否需要编写任何额外的 python 代码?
阅读文档中关于嵌入 Python的部分。我猜你有对包含该函数的模块的引用。最后有一个例子展示了如何从对象中获取函数引用。
pFunc = PyObject_GetAttrString(pModule, argv[2]);
/* pFunc is a new reference */
if (pFunc && PyCallable_Check(pFunc)) {
...
}
Py_XDECREF(pFunc);