溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python里的Self是什么

發(fā)布時(shí)間:2023-05-17 11:42:27 來源:億速云 閱讀:103 作者:zzz 欄目:編程語言

這篇文章主要介紹“Python里的Self是什么”,在日常操作中,相信很多人在Python里的Self是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python里的Self是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

大家學(xué)Python面向?qū)ο蟮臅r(shí)候,總會(huì)遇到一個(gè)讓人難以理解的存在:self。

這個(gè)self到底是誰啊,為什么每個(gè)類實(shí)例方法都有一個(gè)參數(shù)self,它到底有什么作用呢?

「先下結(jié)論:類實(shí)例化后,self即代表著實(shí)例(對象)本身。」

想要理解self有個(gè)最簡單的方法,就是你把self當(dāng)做「實(shí)例(對象)的身份證?!?/p>

Python的類不能直接使用,只有通過創(chuàng)建實(shí)例(對象)才能發(fā)揮它的功能,每個(gè)實(shí)例(對象)都是獨(dú)一無二的,它可以調(diào)用類的方法、屬性。類就像靈魂附體一樣,讓實(shí)例(對象)有了自己(self)的功能。

Python里的Self是什么

初學(xué)者會(huì)發(fā)現(xiàn),類的方法(構(gòu)造方法和實(shí)例方法)中都會(huì)有一個(gè)固定參數(shù)self,其實(shí)這個(gè)參數(shù)就是代表著實(shí)例(對象)本身,就像是一個(gè)身份證,實(shí)例可以憑著身份證去調(diào)用類方法。

Python里的Self是什么

類比人類,人類就是一個(gè)Python類,每個(gè)個(gè)體的人代表著實(shí)例(對象),而每個(gè)人的身份證代表的Python中self,每個(gè)人可以憑借身份證去上大學(xué)、坐高鐵、住酒店...(方法),而Python中的實(shí)例(對象)也可以憑著self去調(diào)用類的方法。

Python里的Self是什么

上面是用類比的方法解釋了下self的含義,說到底self就是代表著實(shí)例本身,「當(dāng)某個(gè)實(shí)例(對象)調(diào)用類方法時(shí),該對象會(huì)把自身的引用作為第一個(gè)參數(shù)自動(dòng)傳給該方法,而這第一個(gè)參數(shù)就是self。」

而且self只是約定俗成的寫法,你可以用任何其他名稱代替self,不會(huì)改變代碼含義,只不過我們一般不這樣做。

為了更好的說明self的作用,我們來舉個(gè)例子,下面有一個(gè)Students類:

class Students:
# 構(gòu)造方法
def __init__(self,name):
self.name = name
# 實(shí)例方法
def study(self,examination_results):
self.examination_results = examination_results
print("同學(xué){}的考試分?jǐn)?shù)是{}".format(self.name,self.examination_results))
print("該實(shí)例對象的地址是{}".format(self))

先來個(gè)實(shí)例student_a。

studend_a = Students('studend_a')
print(studend_a.name)

結(jié)果打印出:studend_a。

再來個(gè)實(shí)例student_b。

studend_b = Students('studend_b')
print(studend_b.name)

結(jié)果打印出:studend_b。

可以看出,實(shí)例(對象)不一樣,打印出的結(jié)果也不一樣,當(dāng)類被實(shí)例化后,self.name其實(shí)就等于實(shí)例(對象).name。

還是以剛剛的代碼為例,我們再來調(diào)用里面的實(shí)例方法,里面會(huì)打印出self,就能看得更加明顯了。

實(shí)例student_a:

studend_a = Students('studend_a')
print(studend_a.study(80))

輸出結(jié)果:

同學(xué)studend_a的考試分?jǐn)?shù)是80 該實(shí)例對象的地址是<「main」.students object="" at="" 0x00000129eb0f6a90="">。

實(shí)例student_b:

studend_b = Students('studend_b')
print(studend_b.study(80))

輸出結(jié)果:

同學(xué)studend_b的考試分?jǐn)?shù)是80 該實(shí)例對象的地址是<「main」.students object="" at="" 0x00000129eb0f6b38="">。

大家能清楚看到兩個(gè)實(shí)例打印出的self是不一樣的,因?yàn)閟elf代表著實(shí)例(對象)本身。

以實(shí)例student_b來說,打印self出現(xiàn)下面對象信息。

<__main__.students object="" at="" 0x00000129eb0f6b38="">。

如果再打印 student_b,會(huì)出現(xiàn)同樣的結(jié)果。

print(student_b)

輸出:

<__main__.students object="" at="" 0x00000129eb0f6b00="">。

這個(gè)時(shí)候是不是就清楚了,類實(shí)例化后,self即代表著實(shí)例(對象)本身。

到此,關(guān)于“Python里的Self是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI