以下是博主認為的對self講解得比較透徹又簡潔明了的資料。
上面的資料把這個問題說得簡單明了,大家認真看一遍相信就對self有個深入的了解了。
總結一下:
在Python為面向對象編程中,成員函數被調用時,無論函數有沒有參數,都會有一個參數傳給它,這個參數就是類本身,所以我們在定義成員函數時不管有沒有參數傳遞,都要寫上一個參數,這個參數代表類本身,通過這個參數我們可以引用類的成員變量和成員函數。
這個參數通常我們命名為self,當然你也可以寫為其它的名字,但是為代碼的標准和可讀性,不建議這樣操作。
所以,下面的代碼:
class Staff: # Staff為員工的意思
bonus = 30000 # bonus為津貼、獎金的意思
def salary(self): # salary為工資的意思
salary = 10000+self.bonus
return salary
zhang_san = Staff()
zhang_san_salray = zhang_san.salary()
我們也可以寫為:
class Staff: # Staff為員工的意思
bonus = 30000 # bonus為津貼、獎金的意思
def salary(swh): # salary為工資的意思
salary = 10000+swh.bonus
return salary
zhang_san = Staff()
zhang_san_salray = zhang_san.salary()
上面這個代碼,一定可以正確運行,如下圖所示: