在使用boost用C ++编写的python模块中定义基类时的继承问题

时间:2014-01-19 10:35:45

标签: python c++ oop boost

我对python完全不熟悉,我试图理解为什么继承不能正常工作。

我有用C ++编写的模块(使用boost),其中包含以下内容:

 [...]
    class_<Bar::Foo>("Foo")
        .add_property("type", Object_type)
        .add_property("id", &Udm::Object::uniqueId)
 [...]

此模块已加载

然后我有另一个模块说:

class X (Bar.Foo)
    def __init__ (self, obj):
        self = obj
    @staticmethod
    def cast(obj):
            return X(obj) 

最后在用户代码中我有

>>> o=dn.root
>>> print o.id
2062344320

这很好,o是由dn.root返回的Bar.Foo

>>> rf = X.cast(dn.root)
>>> print rf.id
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
Boost.Python.ArgumentError: Python argument types in
None.None(X)
did not match C++ signature:
None(Bar::Foo {lvalue})

我无法理解为什么只要id是基类成员并且它在X中没有重载,rf.id就不起作用。

谢谢, 恩德雷

0 个答案:

没有答案