boost.python: 从 Python 调用基数 class 的函数
boost.python: Calling function of a base class from Python
我有一个暴露了 C++ class 的模块:
class MyClass{
public:
MyClass(){}
void foo(){
//...
}
};
BOOST_PYTHON_MODULE(my_module){
class_<MyClass>("MyClass", init<>())
.def("foo", &MyClass::foo)
;
}
在 Python 中,我创建了一个派生自此 class 的 class。
from my_module import *
class Derived(MyClass):
def __init__(self):
self.foo()
d = Derived()
我收到错误:
Boost.Python.ArgumentError: Python argument types in
MyClass.foo(Derived)
did not match C++ signature:
foo(class MyClass {lvalue})
我希望能够从派生 class 调用基 class 中定义的函数。我该如何解决这个问题?
看来您需要在调用 foo
之前调用 MyClass.__init__(self)
;否则 foo
不会获得 MyClass
实例。使用 super().
的奖励积分
我有一个暴露了 C++ class 的模块:
class MyClass{
public:
MyClass(){}
void foo(){
//...
}
};
BOOST_PYTHON_MODULE(my_module){
class_<MyClass>("MyClass", init<>())
.def("foo", &MyClass::foo)
;
}
在 Python 中,我创建了一个派生自此 class 的 class。
from my_module import *
class Derived(MyClass):
def __init__(self):
self.foo()
d = Derived()
我收到错误:
Boost.Python.ArgumentError: Python argument types in
MyClass.foo(Derived)
did not match C++ signature:
foo(class MyClass {lvalue})
我希望能够从派生 class 调用基 class 中定义的函数。我该如何解决这个问题?
看来您需要在调用 foo
之前调用 MyClass.__init__(self)
;否则 foo
不会获得 MyClass
实例。使用 super().