Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(在Boost::Python中)如何实例化Python模块中定义的类的对象,并从C++;_Python_Object_Boost - Fatal编程技术网

(在Boost::Python中)如何实例化Python模块中定义的类的对象,并从C++;

(在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

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

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

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

我自己找到了答案(但我自己还不能回答我的问题,所以我将其作为评论发布):使用eval而不是exec。我自己找到了答案(但我自己还不能回答我的问题,所以我把它作为一个评论发布):使用eval而不是exec。