亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

【python小白】 問關于__new__方法的作用的問題

瀏覽:86日期:2022-06-27 14:17:37

問題描述

代碼A:

# -*- coding:gb2312 -*-class Dog (object): def __init__(self):print('-----init方法-----') def __del__(self):print('-----del方法-----') def __str__(self):#print('-----str方法-----')return ('-----str方法-----') def __new__(cls):print('-----new方法-----')#return object.__new__(cls)xtq = Dog()

代碼A運行結果:【python小白】 問關于__new__方法的作用的問題

代碼B:

# -*- coding:gb2312 -*-class Dog (object): def __init__(self):print('-----init方法-----') def __del__(self):print('-----del方法-----') def __str__(self):#print('-----str方法-----')return ('-----str方法-----') def __new__(cls):print('-----new方法-----')object.__new__(cls)xtq = Dog()

代碼B運行結果:【python小白】 問關于__new__方法的作用的問題

代碼C:

# -*- coding:gb2312 -*-class Dog (object): def __init__(self):print('-----init方法-----') def __del__(self):print('-----del方法-----') def __str__(self):#print('-----str方法-----')return ('-----str方法-----') def __new__(cls):print('-----new方法-----')return object.__new__(cls)xtq = Dog()

代碼C運行結果:

【python小白】 問關于__new__方法的作用的問題

我的問題一:這三段代碼A,B,C為什么輸出的結果都不一樣,原理在于哪里呢?特別是代碼B和代碼C,為什么代碼C這一段,在B的基礎上加上了return,結果就比B多了一個init方法。我的問題二:在給方法傳參數的時候self和cls 這兩個參數有啥區別?為什么__new__這個方法要的參數是cls而__init__方法要傳入的參數是self?

問題解答

回答1:

首先得先明白一件事情: self和cls的區別, cls是代表這個類, slef是用來代表這個類的實例, 如果這個搞清楚, 就成功了一點.

函數參數帶有self的, 可以理解成這個函數, 是實例的方法, 是要和實例綁定的.

__new__方法, 是新式類用來創建實例使用的, 傳入的cls就是用來給object.__new__創建實例使用的參數, 如果沒有傳入cls, object根本不知道創建什么樣的實例.

結合上面, 現在再來說下三個輸出不同的原因:

為什么只有--new, 因為每個類在實例化對象時, 都必須要調用這個__new__方法, 去創建實例, 所以它肯定會被調用, 但是因為該函數被你重寫了, 所以它只是打印了--new方法, 并沒有返回創建實例, 并且放回, 所以__del__也是不會發生

為什么只有--new和--del, 正如第1點說的那樣, 但是這里確實__new___有創建新實例, 但是并沒有返回, 因為只有返回了, 該對象才能進行下一步的__init__, 正因為這里只有創建, 沒有返回, 所以結果這樣

如果看懂前兩點, 相信這個應該沒啥問題, 因為創建了,并且返回了, 所以’__init__’也同樣被執行了, 所有的東西都是像正常的行為那樣發生

最后想說明: 為什么__del__會被執行, 理論上, 這個只有在實例被del析構時, 才會執行,這里并沒有del xtq類似的代碼, 為什么也會執行, 原因就是, 程序結束了, 要退出了, 在執行更底層的程序退出時, python自發做的內存回收, 所以一切塵歸塵土歸土, 創建的對象也被一一析構

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 日本欧美成人免费观看 | 久久精品国产只有精品2020 | 亚洲综合18p | 91蝌蚪九色 | 国产高清在线看免费视频观 | 久久99影院网久久久久久 | 在线视频一区二区日韩国产 | 国产精品αv在线观看 | 婷婷六月丁| 亚洲黄a | 日韩一级片播放 | 国产精品亚洲国产三区 | 91免费网站 | 2020国产成人精品免费视频 | 1000部未满岁18在线观看污 | 亚洲天堂爱爱 | 亚洲免费视频网站 | 薰衣草视频高清在线观看免费 | 久热re这里只有精品视频 | 99亚洲视频 | 亚洲综合综合在线 | 91在线免费看 | 一级特黄特黄毛片欧美的 | 国产精品v免费视频 | 欧美亚洲国产一区二区三区 | 中文字幕一区二区三区在线不卡 | 午夜影院在线视频 | 亚洲视频一 | 婷婷四房综合激情五月性色 | 2020天堂中文字幕一区在线观 | 亚洲最大成人综合网 | 国产亚洲免费观看 | 夜色亚洲 | 玖玖激情 | 国产成人午夜性a一级毛片 国产成人午夜性视频影院 国产成人香蕉久久久久 | 国产婷婷一区二区三区 | 国产精品啪 | 国产一久久香蕉国产线看观看 | 国产精品99爱免费视频 | 欧美一级久久久久久久大 | 国产婷婷综合在线视频 |