(在Boost::Python中)如何实例化Python模块中定义的类的对象,并从C++;
假设我在python模块中定义了一个类:(在Boost::Python中)如何实例化Python模块中定义的类的对象,并从C++;,python,object,boost,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 t
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;
std::cout我自己找到了答案:使用eval而不是exec。我自己找到了答案:使用eval而不是exec。我自己找到了答案(但我自己还不能回答我的问题,所以我将其作为评论发布):使用eval而不是exec。我自己找到了答案(但我自己还不能回答我的问题,所以我把它作为一个评论发布):使用eval而不是exec。