gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 19:32:17 26 4
gpt4 key购买 nike

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

打印 a 的字符串表示形式

std::cout << std::string(py::extract<std::string>(py::str(a))) << std::endl;

打印无。所以出了问题。我该如何正确地做到这一点?

最佳答案

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

关于python - (在 Boost::Python 中)如何实例化 python 模块中定义的类的对象并从 C++ 调用其方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5183216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com