如何解决使用boost / python从C ++初始化python对象返回None
我有一个这样导入到C ++的python模块:
.cpp文件:
boost::python::object mod;
void init_mod(boost::python::object o){
mod = o;
}
// some code
BOOST_PYTHON_MODULE(MyModule){
def("init_mod",&init_mod);
// for the other code
}
从python中,我导入模块并为其分配:
from ..utilities import foo as foo_module
init_mod(foo_module)
在foo中,我有一个名为Foo的类,以及一个可以返回Foo对象的包装器函数
class Foo:
def __init__(self,i,j,k):
self._i = i
self._j = j
self._k = k
self._done = False
def wrapper_foo(i,k):
return Foo(i,k)
在同一个C ++文件中,我尝试创建一个Foo对象,但它返回None:
Bar* create_foo(){
// this returns None
boost::python::object foo = mod.attr("Foo")(1,2,3);
foo.attr("_done") = true; // NoneType has no attribute _done error
// this also returns None
boost::python::object foo2 = mod.attr("wrapper_foo")(1,3);
foo2.attr("_done") = true; // NoneType has no attribute _done error
// some other code
return bar_object;
我该如何解决或解决此问题?
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。