0

有人可以解释下面的代码。根据我的阅读, Myframe 继承了 wx.frame 但我不明白的是 init 方法中给出的以下几行,

        super(MyFrame, self).__init__(parent, id, title,
                                      pos, size, style, name)

代码

class MyFrame(wx.Frame):
    def __init__(self, parent, id=wx.ID_ANY, title="", 
                 pos=wx.DefaultPosition, size=wx.DefaultSize,
                 style=wx.DEFAULT_FRAME_STYLE,
                 name="MyFrame"):
        super(MyFrame, self).__init__(parent, id, title,
                                      pos, size, style, name)
        # Attributes
        self.panel = wx.Panel(self)
        self.panel.SetBackgroundColour(wx.BLACK)
        self.button = wx.Button(self.panel,
                                label="Push Me",
                                pos=(50, 50))
4

1 回答 1

0

那段代码只允许您使用父类的__init__()方法。
因此,对于这些特定属性,不必在子类中重复属性分配代码。

你也可以这样做:

        wx.Frame.__init__() # just an example, args omitted

但是随后您对父类名称进行了硬编码,并且您的代码变得不那么灵活。


另外:
在 Python 3 中,调用super()被简化为:

        super().__init__() # just an example, args omitted
于 2012-05-16T15:34:15.310 回答