python魔法函數(shù)

1.__init __ ;__new __ ; __del __
__init __ 方法是Python最基本的魔術(shù)方法,通過此方法我們可以定義一個(gè)對象的初始操作,實(shí)際上它背后還有一個(gè)__new __方法。__new __是用來創(chuàng)建類并返回這個(gè)類的實(shí)例, 而__init __只是將傳入的參數(shù)來初始化該實(shí)例。
對象生命周期調(diào)用結(jié)束時(shí),__del __ 方法會(huì)被調(diào)用。

class A:
    def __init__(self, name):
        self.name = name
        print(self.name)

    def __del__(self):
        print('del', self.name)

if __name__ == '__main__':
    a = A('王一帆')
    b = A('王二帆')
    c = A('王三帆')
image.png

下面這個(gè)例子,可以讓你更加形象的看到垃圾回收機(jī)制的運(yùn)作:

import time
class A:
    def __init__(self, name):
        self.name = name
        print(self.name)

    def __del__(self):
        print('del', self.name)

if __name__ == '__main__':
    a = A('王一帆')
    b = a
    del a  # 由于a被b引用,因此刪除a不會(huì)使對象被回收
    print('==================')
    time.sleep(3)
    del b
image.png

由此可見當(dāng)對象不再被使用時(shí),該對象就會(huì)被python的垃圾回收機(jī)制回收掉.

2.__str __和__rep __
_str __相當(dāng)于是str()方法 而__repr __相當(dāng)于repr()方法。str是針對于讓人更好理解的字符串格式化,而repr是讓機(jī)器更好理解的字符串格式化。
在使用print()方法的時(shí)候,print首先調(diào)用的就是類里面的定義的__str __如下所示:

class A:
    def __init__(self, name):
        self.name = name

    def __str__(self):
        return 'A的實(shí)例對象str%s' % self.name

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

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

  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡介】: Python 是一個(gè)...
    _小老虎_閱讀 6,353評論 0 10
  • 包(lib)、模塊(module) 在Python中,存在包和模塊兩個(gè)常見概念。 模塊:編寫Python代碼的py...
    清清子衿木子水心閱讀 3,922評論 0 27
  • 小王子的海綿寶寶閱讀 247評論 0 0
  • 外甥女五歲了,是個(gè)愛臭美又要強(qiáng)的可愛小女孩。 一日,爸媽帶姐弟倆去樓下小區(qū)廣場玩。廣場上有許多小朋友,弟弟很快和一...
    吳二_736d閱讀 237評論 0 2
  • 給瑤瑤的一封信 親愛的瑤瑤,你好,媽媽,好久沒有給你寫信了,今天是我給你寫得第幾封信呢,我都有點(diǎn)兒說不清了,...
    豆言瑤語閱讀 218評論 0 0

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