Вызвать метод класса 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("тест"); }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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