0

我们可以将python方法的引用作为参数传递给C吗?这个方法是一个回调方法,将在C代码执行后执行。

4

1 回答 1

1

在 Python C-API 中,Python 对象只是简单的PyObject引用。PyObject可以使用PyObject_Call调用引用(如果您想有更多描述性错误,可以先调用PyCallable_Check。)

假设您使用 API 扩展了一个模块,您将拥有如下方法:

bool call_method(PyObject *method)
{
    PyObject *args = PyTuple_New(0);
    if ( NULL == PyObject_Call(method, args, NULL) )
    {
        // Method call failed
        return false;
    }
    return true;
}

然后,在 Python 中,您使用以下命令调用该方法:

import my_module as bla

bla.call_method(myClass.myMethod)
于 2013-05-20T08:06:45.487 回答