天天看點

Python - 面向對象程式設計 - self 參數

 在類裡面,所有執行個體方法都需要加 self 參數,且排在第一個,有且僅有一個

在類中定義的方法,第一個參數 self 指向調用該方法的執行個體對象,在方法中通過  self.屬性 這樣的形式通路對象的執行個體屬性

其實并不是哦

Python 隻是規定,無論是構造方法還是執行個體方法,最少要包含一個參數,并沒有規定該參數的具體名稱

之是以将其命名為 self,隻是約定俗成的一種習慣,遵守這個約定,可以使我們編寫的代碼具有更好的可讀性,大家一看到 self,就知道它的作用

你想叫 polo 也可以

隻是可讀性很差

如果把類比作造房子的圖紙

類執行個體化後的對象是真正可以住的房子

根據一張圖紙(類),可以設計出成千上萬的房子(執行個體對象)

每個房子長相都是類似的(都有相同的執行個體屬性和執行個體方法),但它們都有各自的主人

如何區分不同的房子:通過 self 參數,可以保證每個房子的主任僅能進入自己的房子(每個執行個體對象隻能調用自己的執行個體屬性和執行個體方法)

一個類可以産生多個執行個體對象,當某個執行個體對象調用執行個體方法,該對象會把自身的引用作為第一個參數自動傳遞給該方法

換句話說:Python 會自動将執行個體方法的第一個參數指向調用該方法的對象

這樣,Python 解釋器就知道到底要執行哪個對象的執行個體方法了

調用執行個體方法的時候,不需要手動為第一個參數傳值

 很明顯,self 存的就是調用該執行個體方法的執行個體對象的引用

是以!誰調用執行個體方法,self 就是誰!