1. 程式人生 > >python的self理解

python的self理解

self只會在類中定義函式時用到,定義函式時,一般預設把第一個引數寫成self,這個self接收的實參是什麼呢,其實一個類物件例項,那麼這個self引數其實也就是一個變數, 只是這個變數指向類例項, 為什麼我們通過例項呼叫類方法的時候不需要給第一個引數傳值呢?是因為python直譯器會在呼叫的時候把呼叫的類例項傳遞給方法。

下面通過一段程式碼來解釋

#coding=utf-8

class People():

def __init__(self,name,height,weight):

self.name =name

self.height =height

self.weight = weight

def get_name(aaa): #類裡面定義方法的時候第一個引數可以不是self,但是python直譯器會把第一個引數當做類例項

return aaa.name

def get_height(self): #self代表的類例項本身,可以看做一個類物件變數

return self.height

p = People("zhangsan",182,60)

name = p.get_name()

print("name=",name)

height = p.get_height() #等價於 height = People.get_heght(p)

print("height=",height)

height1 = People.get_height(p) #這個時候給類函式呼叫顯示給類方法傳遞了類例項

print("height1=",height1)

執行結果:

可以很明顯的看到 類裡面每一個方法定義的時候,第一個引數都指的是類例項,這個名字大家約定俗成是self, 但是也可以取其他名字, 而且類例項呼叫的方法時候不需要給第一個引數傳遞值。