Python 【__new__方法】

.__new__方法
·使用類名()創建對象時,Python的解釋器首先會調用__new__方法爲對象分配空間
·__new__是一個由object基類提供的內置的靜態方法,主要作用有兩個:
1)在內存中爲對象 分配空間
2)返回 對象的引用
·Python的解釋器獲得對象的引用後,將引用作爲第一個參數,傳遞給__init__方法
·重寫__new__方法的代碼非常固定
·重寫__new__一定要return super().new(cls),否則Python的解釋器得不到分配了空間的對象引用,就不會調用對象的初始化方法
·注意:__new__是一個靜態方法,在調用時需要主動傳遞cls參數

看個例子:

#__new__方法的重寫過程
class Musicplayer(object) :
    #重寫object基類中的__new__方法
    #__new__方法可以接收3個參數
    #cls——哪一個類調用就傳遞哪一個類
    #一個*表示這個參數是個多值的元組參數,兩個**表示這是參數是個多值的字典參數
    def __new__(cls, *args, **kwargs):
        #1. 重寫__new__方法。創建對象時,__new__方法會被自動調用
        print('創建對象,分配空間')
        #2. 爲對象分配空間  用super(). 來調用父類方法
        room = super().__new__(cls)
        #3. 注意返回對象的引用
        return  room

    def __init__(self):
        print('播放器初始化')

player = Musicplayer()
print(player)

這是結果:

創建對象,分配空間
播放器初始化
<__main__.Musicplayer object at 0x00000145FEB460F0>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章