Вызвать метод класса Python из С++ в pybind11C++

Программы на C++. Форум разработчиков
Anonymous
Вызвать метод класса Python из С++ в pybind11

Сообщение Anonymous »


Рассмотрим класс обратного вызова в 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("тест"); }

Вернуться в «C++»