使用" self"在Python和wxPython中

时间:2014-08-28 21:59:42

标签: python wxpython

我目前正在阅读一篇关于wxPython的热门出版物。在下面列出的代码中,用于创建2个不同的wx.Frame子类,“self”的使用对我来说似乎令人困惑和不一致。第一个代码示例中的变量在它们前面有self,而第二个代码示例中的变量则没有。为什么选择使用自我以及什么时候不需要/适当。

class MouseEventFrame(wx.Frame):
    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id, 'Frame With Button',size=(300, 100))
        self.panel = wx.Panel(self)
        self.button = wx.Button(self.panel,label="Not Over", pos=(100, 15))
        self.Bind(wx.EVT_BUTTON, self.OnButtonClick,self.button)
        self.button.Bind(wx.EVT_ENTER_WINDOW,self.OnEnterWindow)
        self.button.Bind(wx.EVT_LEAVE_WINDOW,
        self.OnLeaveWindow)


class InsertFrame(wx.Frame):
    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id, 'Frame With Button',size=(300, 100))
        panel = wx.Panel(self)
        button = wx.Button(panel, label="Close", pos=(125, 10),size=(50, 50))
        self.Bind(wx.EVT_BUTTON, self.OnCloseMe, button)
        self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)

1 个答案:

答案 0 :(得分:0)

一般情况下(这是对@ roippi评论的重新修改),请self.panel = ...说明这一点,以便您稍后可以访问self.panel。它长期存储数据。但是,如果您输入panel = ...,则无法在此方法之外访问名为panel的变量。