python基礎(chǔ)(15)-繼承深入

首先,先看一下del內(nèi)置方法:

class CLanguage:
    def __init__(self):
        print("調(diào)用 __init__() 方法構(gòu)造對象")
    def __del__(self):
        print("調(diào)用__del__() 銷毀對象,釋放其空間")
clangs = CLanguage()
#添加一個引用clangs對象的實例對象
cl = clangs
del clangs
print("***********")
程序運行結(jié)果為:
調(diào)用 __init__() 方法構(gòu)造對象
***********
調(diào)用__del__() 銷毀對象,釋放其空間

可以看到,當(dāng)程序中有其它變量(比如這里的 cl)引用該實例對象時,即便手動調(diào)用 del() 方法,該方法也不會立即執(zhí)行。這和 Python 的垃圾回收機(jī)制的實現(xiàn)有關(guān)。

Python 采用自動引用計數(shù)(簡稱 ARC)的方式實現(xiàn)垃圾回收機(jī)制。該方法的核心思想是:每個 Python 對象都會配置一個計數(shù)器,初始 Python 實例對象的計數(shù)器值都為 0,如果有變量引用該實例對象,其計數(shù)器的值會加 1,依次類推;反之,每當(dāng)一個變量取消對該實例對象的引用,計數(shù)器會減 1。如果一個 Python 對象的的計數(shù)器值為 0,則表明沒有變量引用該 Python 對象,即證明程序不再需要它,此時 Python 就會自動調(diào)用 del() 方法將其回收

再看一下 call()內(nèi)置方法
該方法的功能類似于在類中重載 () 運算符,使得類實例對象可以像調(diào)用普通函數(shù)那樣,以“對象名()”的形式使用。

class CLanguage:
    # 定義__call__方法
    def __call__(self,name,add):
        print("調(diào)用__call__()方法",name,add)
clangs = CLanguage()
clangs("C語言中文網(wǎng)","http://c.biancheng.net")
程序執(zhí)行結(jié)果為:
調(diào)用__call__()方法 C語言中文網(wǎng) http://c.biancheng.net

可以看到,通過在 CLanguage 類中實現(xiàn) call() 方法,使的 clangs 實例對象變?yōu)榱丝烧{(diào)用對象。
也可以這樣使用
clangs.call("C語言中文網(wǎng)","http://c.biancheng.net")
總結(jié)一下:如果你想把類當(dāng)成一種函數(shù),就可以定義一下這個內(nèi)置的函數(shù)
==================================================

后面的知識,后面再說吧,因為知識總是說不完,慢慢的補(bǔ)充吧

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容