我对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就不起作用。
谢谢, 恩德雷