我正在尝试子类化wxpython SingleChoiceDialog类。我有一个TableChoiceDialog类继承自SingleChoiceDialog添加通用功能,我有2个子类,为此添加更精致的功能。基本上我是O.O.P'ing
在我的TableChoiceDialog类中,我有一行调用超类的__init__
,即
class TableChoiceDialog(wx.SingleChoiceDialog):
def __init__(self, parent, message, caption, list, ...other args...):
wx.SingleChoiceDialog.__init__(self, parent, message, caption, list)
我遇到的问题是,根据SingleChoiceDialog.__init__
docstring(以及wxPython API),SingleChoiceDialog没有将self参数作为__init__
方法的一部分。
__init__(Window parent, String message, String caption,
List choices=EmptyList, long style=CHOICEDLG_STYLE,
Point pos=DefaultPosition) -> SingleChoiceDialog
如上所述,程序会输出错误:
swig/python detected a memory leak of type 'wxSingleChoiceDialog *', no destructor found.
如果我取出self参数,系统会抱怨它期望一个SingleChoiceDialog
对象作为第一个参数,这似乎指向它实际上想要一个对self的引用。
当我拿出父参数时,离开self(以及其他3个我很确定没问题)系统抱怨它只收到3个参数,当它需要时4.我很确定我是通过4。
因此。我犯了哪些明显的错误?我是否完全误解了python如何处理对象(因此几乎误解了python)?我是否误解了OOP?
请帮忙。提前致谢
答案 0 :(得分:0)
__init__
的调用似乎没问题(__init__
的第一个参数始终为self
)。wx
。 swig的警告消息表明没有为wxSingleChoiceDialog
生成析构函数,请参阅this memory leak discussion。该消息可能与__init__
电话无关。
答案 1 :(得分:0)
wxPython中的一些对话框不是子类,因为它们不是真正的类,而是围绕用于显示对话框的平台API方法的包装。我知道wx.MessageDialog
就是这种情况,wx.SingleChoiceDialog
也可能是这种情况。