(在Boost :: Python中)如何实例化python模块中定义的类的对象并从C ++调用其方法

时间:2011-03-03 16:00:37

标签: python object boost

假设我在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;

打印无。出了点问题。我该怎么做?

1 个答案:

答案 0 :(得分:1)

我自己找到了答案:使用eval而不是exec。