Предположим, у меня есть класс, определенный в модуле Python:
class A(object):
def __init__(self):
print 'init'
def method(self):
print 'method'
Я бы хотел создать экземпляр объекта этого класса с помощью boost :: python. Я попробовал это следующим образом:
namespace py = boost::python;
// importing the module and extracting its namespace to
// the variable `ns`
...
py::object a = py::exec("A()", ns)
a.attr("method")()
, который печатает init
, а затем вылетает. Я заметил, что после выполнения
py::object a = py::exec("A()", ns)
печать строкового представления с
std::cout << std::string(py::extract<std::string>(py::str(a))) << std::endl;
печатает Нет. Итак, что-то пошло не так. Как мне сделать это правильно?