【问题标题】:Passing python method's reference to C as callback将python方法对C的引用作为回调传递
【发布时间】:2013-05-20 06:37:46
【问题描述】:

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

【问题讨论】:

    标签: python python-c-api


    【解决方案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)
    

    【讨论】:

    • 感谢您的回复。在 JNI 中是否也可能发生同样的事情?
    • 我以前从未使用过 Java 原生接口,但快速搜索返回:stackoverflow.com/questions/6746078/…
    • 谢谢:)。我会调查的。
    猜你喜欢
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 2013-07-10
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    相关资源
    最近更新 更多