如何将 C++ 函数作为回调传递给 Python?
How to pass C++ function as callback to Python?
我正在使用 Python 3 C API 与一些 Python 代码进行交互。
我已经使用 PyObject_Call
从 C++ 中实例化了一个 Python 对象,并且我已经能够使用 PyObject_SetAttrString
修改它的一些属性。我想修改的属性之一是回调函数,如何从我的 C++ 函数之一实例化 Python 对象?
你需要做的是创建一个可调用的Python对象,当它被调用时,它最终会调用一个用C(或C++)实现的函数。
我将实现一个新的 class,如 Python Type Objects docs. It may implement any kind of constructor etc. you may need, but most importantly for this purpose, it should implement the tp_call
, which will make instances of this class callable (as if there was a __call__
中指定的 Python 方法)。
tp_call
的实现在 C/C++ 中,您可以创建此 class 的实例,它们是 Python 对象并且可以传递给任何 Python代码。
我正在使用 Python 3 C API 与一些 Python 代码进行交互。
我已经使用 PyObject_Call
从 C++ 中实例化了一个 Python 对象,并且我已经能够使用 PyObject_SetAttrString
修改它的一些属性。我想修改的属性之一是回调函数,如何从我的 C++ 函数之一实例化 Python 对象?
你需要做的是创建一个可调用的Python对象,当它被调用时,它最终会调用一个用C(或C++)实现的函数。
我将实现一个新的 class,如 Python Type Objects docs. It may implement any kind of constructor etc. you may need, but most importantly for this purpose, it should implement the tp_call
, which will make instances of this class callable (as if there was a __call__
中指定的 Python 方法)。
tp_call
的实现在 C/C++ 中,您可以创建此 class 的实例,它们是 Python 对象并且可以传递给任何 Python代码。