Python中的__init__作用是什么
看到Python中有個(gè)函數(shù)名比較奇特,__init__我知道加下劃線的函數(shù)會(huì)自動(dòng)運(yùn)行,但是不知道它存在的具體意義..
Python中所有的類成員(包括數(shù)據(jù)成員)都是 公共的 ,所有的方法都是 有效的 。
只有一個(gè)例外:如果你使用的數(shù)據(jù)成員名稱以 雙下劃線前綴 比如__privatevar,Python的名稱管理體系會(huì)有效地把它作為私有變量。
這樣就有一個(gè)慣例,如果某個(gè)變量只想在類或?qū)ο笾惺褂茫蛻?yīng)該以單下劃線前綴。而其他的名稱都將作為公共的,可以被其他類/對(duì)象使用。記住這只是一個(gè)慣例,并不是Python所要求的(與雙下劃線前綴不同)。
同樣,注意__del__方法與 destructor 的概念類似。"
恍然大悟原來__init__在類中被用做構(gòu)造函數(shù),固定寫法,看似很死板,其實(shí)有道理
def __init__(self, name): '''Initializes the person's data.''' self.name = name print '(Initializing %s)' % self.name # When this person is created, he/she # adds to the population Person.population += 1
name變量屬于對(duì)象(它使用self賦值)因此是對(duì)象的變量
self.name的值根據(jù)每個(gè)對(duì)象指定,這表明了它作為對(duì)象的變量的本質(zhì)。
例如我們定義一個(gè)Box類,有width, height, depth三個(gè)屬性,以及計(jì)算體積的方法:
class Box: def setDimension(self, width, height, depth): self.width = width self.height = height self.depth = depth def getVolume(self): return self.width * self.height * self.depth b = Box() b.setDimension(10, 20, 30) print(b.getVolume())
我們?cè)贐ox類中定義了setDimension方法去設(shè)定該Box的屬性,這樣過于繁瑣,而用__init__()這個(gè)特殊的方法就可以方便地自己對(duì)類的屬性進(jìn)行定義,__init__()方法又被稱為構(gòu)造器(constructor)
class Box: #def setDimension(self, width, height, depth): # self.width = width # self.height = height # self.depth = depth def __init__(self, width, height, depth): self.width = width self.height = height self.depth = depth def getVolume(self): return self.width * self.height * self.depth b = Box(10, 20, 30) print(b.getVolume())
知識(shí)點(diǎn)擴(kuò)展:
__init__()要點(diǎn)如下:
1.名稱固定,必須為__init__()
2.第一個(gè)參數(shù)固定,必須為self。self指的就是剛剛創(chuàng)建好的示例對(duì)象。
3.構(gòu)造函數(shù)通常用來初始化示例屬性,如下代碼就是初始化示例屬性:
4.通過類名(參數(shù)列表),來調(diào)用構(gòu)造函數(shù),調(diào)用后,將創(chuàng)建好的對(duì)象返回給相應(yīng)的變量。
5.__init__()方法:初始化創(chuàng)建好的對(duì)象,初始化指的是:"給實(shí)例屬性賦值"
6.__new__()方法:用于創(chuàng)建對(duì)象,但我們一般無需定義該方法。
以上就是Python中的__init__作用是什么的詳細(xì)內(nèi)容,更多關(guān)于Python中的__init__到底是干什么的的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
如何使用Python的Requests包實(shí)現(xiàn)模擬登陸
這篇文章主要為大家詳細(xì)介紹了使用Python的Requests包模擬登陸,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04Python 中的 dataclass使用場(chǎng)景與代碼示例詳解
在Python中,dataclass是一個(gè)裝飾器,用于簡化類的定義,自動(dòng)生成初始化、比較等方法,適用于需要存儲(chǔ)數(shù)據(jù)的場(chǎng)景,通過示例展示了dataclass的基本用法,感興趣的朋友跟隨小編一起看看吧2024-09-09pytorch?dataset實(shí)戰(zhàn)案例之讀取數(shù)據(jù)集的代碼
這篇文章主要介紹了pytorch?dataset實(shí)戰(zhàn)案例讀取數(shù)據(jù)集的相關(guān)知識(shí),這段代碼可以作為讀取數(shù)據(jù)集的一個(gè)DataSet類的基礎(chǔ)類,可以擴(kuò)充進(jìn)行修改,以后有類似需要可以拿過來修改,本文結(jié)合實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下2022-10-10pytorch 實(shí)現(xiàn)在測(cè)試的時(shí)候啟用dropout
這篇文章主要介紹了pytorch 實(shí)現(xiàn)在測(cè)試的時(shí)候啟用dropout的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05python接口測(cè)試對(duì)修改密碼接口進(jìn)行壓測(cè)
這篇文章主要為大家介紹了python接口測(cè)試對(duì)修改密碼接口進(jìn)行壓測(cè)的腳本實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07