提升python,从另一个类的方法返回一个类

时间:2015-12-02 20:54:35

标签: python c++ boost

我的问题是我有两个这样的课程

class B{
public:
    double x,y;
}

class A{
public:
    B foo();
}


BOOST_PYTHON_MODULE(interestingLib){
    class_<A>("A")
        .def("foo", &A::foo)
    ;
    class_<B>("B")
        .def_readonly("x",&B::x)
        .def_readonly("y",&B::y)
    ;
}

在我的python脚本中,我调用我的函数foo并获得返回,之后我想看到这样的成员变量x

A = interestingLib.A
B = A.foo()
B.x

但我收到错误AttributeError: 'NoneType' object has no attribute 'x'

谁能告诉我这是什么问题?

1 个答案:

答案 0 :(得分:2)

在python中你应该使用

A = interestingLib.A()

而不是

A = interestingLib.A

此代码A = interestingLib.A分配给A类型的Boost.Python.class对象。使用A = interestingLib.A(),您可以使用默认构造函数创建类型为A的对象。