传递python方法';s引用C作为回调

传递python方法';s引用C作为回调,python,python-c-api,Python,Python C Api,我们能否将python方法的引用作为参数传递给C。此方法是一个回调方法,将在执行C代码后执行。在python C-API中,python对象只是PyObject引用PyObject可以使用调用引用(如果您想有更多描述性错误,可以先调用。) 假设您已经使用API扩展了一个模块,您将拥有如下方法: bool call_method(PyObject *method) { PyObject *args = PyTuple_New(0); if ( NULL == PyObject_Ca

我们能否将python方法的引用作为参数传递给C。此方法是一个回调方法,将在执行C代码后执行。

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

假设您已经使用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)

谢谢你的回复。同样的事情在JNI中也可能发生吗?我以前从未使用过Java本机接口,但是快速搜索返回了这样的结果:谢谢:)。我会调查的。