Вызвать метод класса Python из С++ в pybind11 ⇐ C++
-
Anonymous
Вызвать метод класса Python из С++ в pybind11
Рассмотрим класс обратного вызова в Python.
класс My_Callback(): защита __init__(сам): проходить def do_something(сам, что-то): распечатать (что-то) Этот класс используется в оболочке DLL, которая использует pybind11 для предоставления его Python. Ссылка на класс сохраняется в ENUM и передается функции C++.
void callPy(py::object f) { //вызов f.do_something("test"); } // ... callPy(userData::myCallback); Существует множество примеров вызова функций Python из C++ (документ pybind11), но каков предполагаемый способ вызова методов класса? Такое ощущение, что мне нужно привести py::object к My_Callback, но я не понимаю, как это сделать.
Следующие строки, похоже, выполняют свою работу, но действительно ли это именно тот способ, которым это нужно?
void callPy(py::object f) { py::object mycallback = f.attr("do_something"); mycallback("тест"); }
Рассмотрим класс обратного вызова в Python.
класс My_Callback(): защита __init__(сам): проходить def do_something(сам, что-то): распечатать (что-то) Этот класс используется в оболочке DLL, которая использует pybind11 для предоставления его Python. Ссылка на класс сохраняется в ENUM и передается функции C++.
void callPy(py::object f) { //вызов f.do_something("test"); } // ... callPy(userData::myCallback); Существует множество примеров вызова функций Python из C++ (документ pybind11), но каков предполагаемый способ вызова методов класса? Такое ощущение, что мне нужно привести py::object к My_Callback, но я не понимаю, как это сделать.
Следующие строки, похоже, выполняют свою работу, но действительно ли это именно тот способ, которым это нужно?
void callPy(py::object f) { py::object mycallback = f.attr("do_something"); mycallback("тест"); }
Мобильная версия