簡體   English   中英

函數體中的Python變量“聲明”

[英]Python variable “declaration” in function body

class Example(wx.Frame):

    def __init__(self, *args, **kwargs):
        super(Example, self).__init__(*args, **kwargs) 

        self.InitUI()

    def InitUI(self):    

        menubar = wx.MenuBar()
        fileMenu = wx.Menu()
        viewMenu = wx.Menu()

        self.shst = viewMenu.Append(wx.ID_ANY, 'Show statubar', 
            'Show Statusbar', kind=wx.ITEM_CHECK)
...

我最近開始學習python和wxPython。 上面的代碼片段來自http://www.zetcode.com/wxpython/menustoolbars/ 我試圖繞過self.shst變量。 為什么有必要在其前面添加self關鍵字?

從我讀到的,在__init__方法的上下文中使用self關鍵字來“聲明”實例變量,但是作者在__init__中沒有shst聲明。

編輯根據您的答案,我做了以下測試:

class Test(object):
    def __init__(self):
        self.x = 20
    def func(self):
        self.y = 10
    def getVal(self):
        return self.y


def main():
    t = Test()
    print t.getVal()
    print dir(t)

if __name__ == '__main__':
    main()

我無法在getVal()函數中訪問self.y,我在dir(t)的輸出中看不到y。 不應該自我。可以訪問Test類中的每個函數嗎?

沒有必要在__init__定義實例變量。 它們可以在任何地方定義。 Python是一個動態語言,可以在任何時候向對象添加屬性。

如果你沒有self. shst self. ,那么它只是一個超出范圍的局部變量,並在方法退出后進行垃圾收集。 在賦值之前不需要聲明python類/對象成員。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM