gpt4 book ai didi

python - boost .python : Calling function of a base class from Python

转载 作者:行者123 更新时间:2023-11-30 23:01:40 25 4
gpt4 key购买 nike

我有一个暴露了 C++ 类的模块:

class MyClass{
public:
MyClass(){}
void foo(){
//...
}
};

BOOST_PYTHON_MODULE(my_module){
class_<MyClass>("MyClass", init<>())
.def("foo", &MyClass::foo)
;
}

在 Python 中,我创建了一个从该类派生的类。

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})

我希望能够从派生类调用基类中定义的函数。我该如何解决这个问题?

最佳答案

看起来你需要在调用foo之前调用MyClass.__init__(self);否则 foo 无法获取 MyClass 实例。使用奖励积分super() .

关于python - boost .python : Calling function of a base class from Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34830613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com