0
class A(object): 
    def routine(self):
        print "A.routine()"
class B(A):
    def routine(self):
        print "B.routine()"
        A().routine()
def fun():
    b = B()
    b.routine()
if __name__ == '__main__':fun()

当我使用上面的代码时, A().routine 在类 A 的方法中执行命令,但是当我使用代码时:

import wx

class Example(wx.Frame):

def __init__(self, parent, title):

    wx.Frame().__init__(parent, title=title, size=(300, 200))
    self.Centre()
    self.Show()


if __name__ == '__main__':

    app = wx.App()
    Example(None, title='Size')
    app.MainLoop()

为什么会这样

wx.Frame().__init__(parent, title=title, size=(300, 200))

不像

A().routine()

而是显示错误: TypeError: Required argument 'parent' {pos 1} not found

4

1 回答 1

0

编码

A().routine()

创建一个 A对象并调用该对象的方法。

要为您自己的对象调用基类方法,请使用以下命令:

super(B, self).routine()

对于您的示例框架,请使用:

class Example(wx.Frame):
    def __init__(self, parent, title):
        super(Example, self).__init__(parent, title=title, size=(300, 200))
        ...

如果您真的不想使用super,请显式调用基类方法:

class Example(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, title=title, size=(300, 200))
        ...

另请参阅使用 __init__() 方法了解 Python super()

于 2013-05-27T09:09:48.207 回答