PyObject* obj = ....
PyObject *ret = PyObject_CallMethod(obj, "foo", "(s)", "An arg");
if (!ret) {
// check error...
}
阅读Python C API 文档。在这种情况下,您需要对象协议。
PyObject* PyObject_CallMethod(PyObject *o, char *method, char *format, ...)
返回值:新引用。
使用可变数量的 C 参数调用对象 o 的名为 method 的方法。C 参数由Py_BuildValue()
应生成元组的格式字符串描述。格式可能是NULL
,表示不提供任何参数。返回调用成功或NULL
失败的结果。这相当于 Python 表达式o.method(args)
。请注意,如果您只通过PyObject * args
,
PyObject_CallMethodObjArgs()
是一种更快的选择。
和
PyObject* PyObject_CallMethodObjArgs(PyObject *o, PyObject *name, ..., NULL)
返回值:新引用。
调用 object 的方法o
,其中方法的名称以 Python 字符串对象的形式给出。它使用可变数量的
PyObject*
参数调用。参数作为可变数量的参数提供,后跟NULL
. 返回调用成功或
NULL
失败的结果。