从boost::python生成的python类继承

从boost::python生成的python类继承,python,boost-python,Python,Boost Python,我在继承使用boost::python生成的python类时遇到问题 我有一个类,其函数Print()的定义如下: void CMagnet::Print() { cout << "Hello" << endl; } 我得到的是: hirbel>python der_test.py Hello Traceback (most recent call last): File "der_test.py", line 10, in <module>

我在继承使用boost::python生成的python类时遇到问题

我有一个类,其函数Print()的定义如下:

void CMagnet::Print()
{
  cout << "Hello" << endl;
}
我得到的是:

hirbel>python der_test.py

Hello

Traceback (most recent call last):
  File "der_test.py", line 10, in <module>
    b = DerMagnet()
  File "der_test.py", line 5, in __init__
    self.Print()
Boost.Python.ArgumentError: Python argument types in
    CMagnet.Print(DerMagnet)
did not match C++ signature:
    Print(CMagnet {lvalue})
你好 回溯(最近一次呼叫最后一次): 文件“deru test.py”,第10行,在 b=德马涅特() 文件“der_test.py”,第5行,在_init中__ self.Print() ArgumentError:中的Python参数类型 CMagnet.Print(Demagnet) 与C++签名不匹配: 打印(CMagnet{lvalue}) 这意味着当我实例化CMagnet类时,我可以毫无问题地调用Print()方法,但是当我从中继承并且派生类尝试调用该方法时,自参数会自动插入为第一个参数,签名是错误的。我将如何解决这个问题


非常感谢您的帮助。

我确认@kerim评论


如果您没有调用父类“\uuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
from CMagnet import CMagnet

class DerMagnet(CMagnet):
    def __init__(self):
        self.Print()

a = CMagnet()
a.Print()

b = DerMagnet()
Hello

Traceback (most recent call last):
  File "der_test.py", line 10, in <module>
    b = DerMagnet()
  File "der_test.py", line 5, in __init__
    self.Print()
Boost.Python.ArgumentError: Python argument types in
    CMagnet.Print(DerMagnet)
did not match C++ signature:
    Print(CMagnet {lvalue})