不行,一個(gè)class只能有一個(gè)用于構(gòu)造對(duì)象的__init__函數(shù)
創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供桓臺(tái)網(wǎng)站建設(shè)、桓臺(tái)做網(wǎng)站、桓臺(tái)網(wǎng)站設(shè)計(jì)、桓臺(tái)網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、桓臺(tái)企業(yè)網(wǎng)站模板建站服務(wù),十多年桓臺(tái)做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
但python中的變量是無(wú)類(lèi)型的,因此傳給__init__的參數(shù)可以是任何類(lèi)型
python中的函數(shù)參數(shù)在定義時(shí)可以有默認(rèn)值,可以讓__init__函數(shù)接受多個(gè)參數(shù),在后面的一些參數(shù)給出默認(rèn)值的方法讓__init__接受不同個(gè)數(shù)的參數(shù),并且執(zhí)行類(lèi)型檢查執(zhí)行不同的代碼,用上述方法實(shí)現(xiàn)類(lèi)的構(gòu)造函數(shù)的多態(tài)性
class?Person:
#?此處,兩個(gè)?下劃線?_?_
def?__init__(self,name,job):
self.name=name
self.job=job
bob=Person('Bob?Smith','dev')
print(bob.name,bob.job)
1.類(lèi)的構(gòu)造函數(shù),用于初始化類(lèi)成員等,只能用 init ,不能換其他名字
2. init 方法的意義: init 方法在類(lèi)的一個(gè)對(duì)象被建立時(shí),馬上運(yùn)行。
def init (self, name):
xxxxxxxxxx
3.類(lèi)的方法與普通的函數(shù)只有一個(gè)特別的區(qū)別——它們必須有一個(gè)額外的第一個(gè)參數(shù)名稱(chēng),但是在調(diào)用這個(gè)方法的時(shí)候你不為這個(gè)參數(shù)賦值,Python會(huì)提供這個(gè)值。這個(gè)特別的變量指對(duì)象本身,按照慣例它的名稱(chēng)是self。
4. init 不是構(gòu)造函數(shù),Python對(duì)象在調(diào)用 init 的時(shí)候已被構(gòu)造出來(lái),稱(chēng)為“初始化”比較合適。
5.如果子類(lèi)的方法覆蓋了父類(lèi),想調(diào)用父類(lèi)的方法怎么辦?
Python沒(méi)有super,很簡(jiǎn)單,直接“父類(lèi)名.方法”即可。
Python中有兩個(gè)特殊的方法, 一個(gè)是構(gòu)造函數(shù) init , 另一個(gè)是析構(gòu)函數(shù) del ,統(tǒng)稱(chēng)為魔術(shù)方法。
構(gòu)造函數(shù) init ,創(chuàng)建實(shí)例對(duì)象之后Python會(huì)自動(dòng)執(zhí)行此方法,把初始化的屬性特點(diǎn)放到實(shí)例對(duì)象里。
構(gòu)造函數(shù)是創(chuàng)建并初始對(duì)象屬性,那么對(duì)象使用完成后,系統(tǒng)是怎么處理這些呢?
這個(gè)時(shí)候,Python引入了銷(xiāo)毀對(duì)象功能的析構(gòu)函數(shù) del ()
析構(gòu)函數(shù) del 是對(duì)象沒(méi)有被引用時(shí)會(huì)觸發(fā)垃圾回收機(jī)制,進(jìn)行內(nèi)存釋放.
python 內(nèi)置的 del 方法稱(chēng)為析構(gòu)方法。用于實(shí)現(xiàn)對(duì)象被銷(xiāo)毀時(shí)所需的操作。
常見(jiàn)的應(yīng)用常見(jiàn)如:
析構(gòu)方法 del ()是可選的,如果不提供,則Python 會(huì)在后臺(tái)提供默認(rèn)析構(gòu)函數(shù)
如果要顯式的調(diào)用析構(gòu)函數(shù),可以使用del關(guān)鍵字: del obj
析構(gòu)方法的作用是銷(xiāo)毀對(duì)象的,在python中采用垃圾回收機(jī)制。
Python垃圾回收機(jī)制核心思想是:
詳細(xì)說(shuō)明:
我們主動(dòng)刪除對(duì)象調(diào)用del 對(duì)象;程序運(yùn)行結(jié)束后,python也會(huì)自動(dòng)進(jìn)行刪除其他的對(duì)象。
注意:
如果我們重寫(xiě)子類(lèi)的 del () 方法(父類(lèi)為非 object 的類(lèi)),則必須顯式調(diào)用父類(lèi)的 del () 方法,這樣才能保證在回收子類(lèi)對(duì)象時(shí),其占用的資源(可能包含繼承自父類(lèi)的部分資源)能被徹底釋放
我們本期學(xué)習(xí)了Python內(nèi)置函數(shù)析構(gòu)函數(shù),用于沒(méi)有被引用的對(duì)象進(jìn)行回收處理,一般情況下,我們不用刻意去調(diào)用,python內(nèi)部會(huì)對(duì)進(jìn)行觸發(fā)。
以上是本期內(nèi)容,歡迎大佬們?cè)u(píng)論區(qū)指正,下期見(jiàn)~