淺談Python類中的self到底是干啥的
Python編寫類的時候,每個函數(shù)參數(shù)第一個參數(shù)都是self,一開始我不管它到底是干嘛的,只知道必須要寫上。后來對Python漸漸熟悉了一點(diǎn),再回頭看self的概念,似乎有點(diǎn)弄明白了。
首先明確的是self只有在類的方法中才會有,獨(dú)立的函數(shù)或方法是不必帶有self的。self在定義類的方法時是必須有的,雖然在調(diào)用時不必傳入相應(yīng)的參數(shù)。
self名稱不是必須的,在python中self不是關(guān)鍵詞,你可以定義成a或b或其它名字都可以,但是約定成俗(為了和其他編程語言統(tǒng)一,減少理解難度),不要搞另類,大家會不明白的。
下例中將self改為myname一樣沒有錯誤:
class Person: def _init_(myname,name): myname.name=name def sayhello(myname): print 'My name is:',myname.name p=Person('Bill') print p
self指的是類實例對象本身(注意:不是類本身)。
class Person: def _init_(self,name): self.name=name def sayhello(self): print 'My name is:',self.name p=Person('Bill') print p
在上述例子中,self指向Person的實例p。 為什么不是指向類本身呢,如下例子:
class Person: def _init_(self,name): self.name=name def sayhello(self): print 'My name is:',self.name p1=Person('Bill') p2 = Person('Apple') print p1
如果self指向類本身,那么當(dāng)有多個實例對象時,self指向哪一個呢?
總結(jié)
self在定義時需要定義,但是在調(diào)用時會自動傳入。
self的名字并不是規(guī)定死的,但是最好還是按照約定是用self
self總是指調(diào)用時的類的實例。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python數(shù)學(xué)建模是加深Numpy和Pandas學(xué)習(xí)
這篇文章主要介紹了python數(shù)學(xué)建模是加深Numpy和Pandas學(xué)習(xí),緊接上一篇學(xué)習(xí)內(nèi)容展開Numpy更多相關(guān)內(nèi)容,需要的小伙伴可以參考一下2022-07-07Tensorflow自定義模型與訓(xùn)練超詳細(xì)講解
TensorFlow是基于數(shù)據(jù)流編程的符號數(shù)學(xué)系統(tǒng),廣泛用于機(jī)器學(xué)習(xí)算法的編程實現(xiàn),前身是谷歌的神經(jīng)網(wǎng)絡(luò)算法庫DistBelief,Tensorflow擁有多層級結(jié)構(gòu),可部署于各類服務(wù)器、PC終端和網(wǎng)頁并支持GPU和TPU高性能數(shù)值計算,被廣泛應(yīng)用于谷歌內(nèi)部的產(chǎn)品開發(fā)和各領(lǐng)域的科學(xué)研究2022-11-11Python的Pandas庫中使用DataFrame篩選和刪除含特定值的行與列
Pandas是一個強(qiáng)大的數(shù)據(jù)處理庫,提供了各種功能來操作和處理數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于Python的Pandas庫中使用DataFrame篩選和刪除含特定值的行與列的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-05-05Python實現(xiàn)數(shù)據(jù)可視化看如何監(jiān)控你的爬蟲狀態(tài)【推薦】
今天主要是來說一下怎么可視化來監(jiān)控你的爬蟲的狀態(tài)。文中通過實例代碼給大家分析了Python實現(xiàn)數(shù)據(jù)可視化看如何監(jiān)控你的爬蟲狀態(tài),感興趣的朋友一起看看吧2018-08-08Python語言實現(xiàn)百度語音識別API的使用實例
這篇文章主要介紹了Python語言實現(xiàn)百度語音識別API的使用實例,具有一定借鑒價值,需要的朋友可以參考下。2017-12-12