為了說清楚 self 是個什麼東西,首先需要搞清實例與類之間的關系。
人就是一種類,人有名字、身高、體重等屬性,不同人這些屬性都是不一樣的,除此之外,人還有很多方法(功能),例如思考、跑步、睡覺等等。
class Person:
def __init__(self, name):
self.name = name # 定義類的屬性
def think(self): # self其實就是類函數think的一個普通參數而已,表示被調用的對象,參數具體值也即我們的實例對象
print("{} is thinking".format(self.name))
具體到每一個人,例如你自己,你身邊的每一個具體的人,都是「人類」的實例對象。實例繼承了類的所有屬性和方法,例如:
xiaoming = Person("xiaoming")
我們構造了一個叫"xiaoming"的人,它是Person類的實例對象,我們給Person類定義了一個think方法,但是需要一個參數,我們可以把xiaoming這個實例對象傳遞過去。
>>>Person.think(xiaoming)
xiaoming is thinking
所以,這裡的 self 其實就是類函數 think 的一個普通參數而已,表示被調用對象,具體值即我們的實例對象,那為什麼要叫self呢?其實這是約定俗成