(原文是 Python's Magical Self ,來自 http://concentricsky.com )
Python的self參數有時真讓人抓狂,比如,你必須在每一個類的方法裡顯示定義self,然後,它會霸佔不需要它們的地方。
[python] view plain copy class Foo(object): x = 9 def __init__(self,x): self.x = x def bar(self,y): return self.x + y
如果你有C++,Java或其他語言的編程背景,你會覺得 __init__ 和 bar 方法裡的self 看起來很多餘,Python不是經常吹噓自己的簡答和優雅嗎,self到底有什麼用。
範圍出現了
在python裡,範圍是非常簡單的。Python裡的一切都是對象,幾乎任何東西都是在對象水平的範圍裡。寫一個模組試試。
[python] view plain copy # test.py def say_hi(): print 'Hi!'
你剛剛建立了一個新的帶有say_hi屬性的模組對象。
定義一個類。
[python] view plain copy class Foo(object): x = 9 def __init__(self,x): self.x = x def bar(self,y): return self.x + y
你剛剛寫了一個帶有一些屬性的類對象,那些屬性是 x,__init__ ,還有 bar。
執行個體化Foo。
[python] view plain copy foo = Foo(5)
你建立了一個帶有屬性x,__init__ ,和bar的Foo 執行個體,請記住,foo的三個屬性跟Foo的不一樣,待會,你就會知道為什麼。
上下文就是一切
把Foo拆開:
[python] view plain copy def bar(self,y): return self.x + y