将python方法的引用传递给C作为回调

时间:2013-05-20 06:37:46

标签: python python-c-api

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

1 个答案:

答案 0 :(得分:1)

在Python C-API中,Python对象只是PyObject引用。可以使用PyObject_Call调用PyObject引用(如果您想要有更多描述性错误,可以先调用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)