日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

Python函數__new__及__init__作用及區別解析

瀏覽:145日期:2022-07-12 17:40:09

【同】

二者均是Python面向對象語言中的函數,__new__比較少用,__init__則用的比較多。

【異】

__new__是在實例創建之前被調用的,因為它的任務就是創建實例然后返回該實例對象,是個靜態方法。__init__是當實例對象創建完成后被調用的,然后設置對象屬性的一些初始值,通常用在初始化一個類實例的時候。是一個實例方法。

也就是:__new__先被調用,__init__后被調用,__new__的返回值(實例)將傳遞給__init__方法的第一個參數,然后__init__給這個實例設置一些參數。

Python函數__new__及__init__作用及區別解析

===》》》Python函數__new__及__init__作用及區別解析

【一些說明】

1、繼承自object的新式類才有__new__

2、__new__至少要有一個參數cls,代表當前類,此參數在實例化時由Python解釋器自動識別

3、__new__必須要有返回值,返回實例化出來的實例,這點在自己實現__new__時要特別注意,可以return父類(通過super(當前類名, cls))__new__出來的實例,或者直接是object的__new__出來的實例

4、__init__有一個參數self,就是這個__new__返回的實例,__init__在__new__的基礎上可以完成一些其它初始化的動作,__init__不需要返回值

5、如果__new__創建的是當前類的實例,會自動調用__init__函數,通過return語句里面調用的__new__函數的第一個參數是 cls 來保證是當前類實例,如果是其他類的類名,;那么實際創建返回的就是其他類的實例,其實就不會調用當前類的__init__函數,也不會調用其他類的__init__函數。

6、在定義子類時沒有重新定義__new__()時,Python默認是調用該類的直接父類的__new__()方法來構造該類的實例,如果該類的父類也沒有重寫__new__(),那么將一直按此規矩追溯至object的__new__()方法,因為object是所有新式類的基類。

7、而如果子類中重寫了__new__()方法,那么你可以自由選擇任意一個的其他的新式類(必定要是新式類,只有新式類必定都有__new__(),因為所有新式類都是object的后代,而經典類則沒有__new__()方法)的__new__()方法來制造實例,包括這個新式類的所有前代類和后代類,只要它們不會造成遞歸死循環。反正肯定不能調用自己的__new__,這肯定是死循環。

8、對于子類的__init__,其調用規則跟__new__是一致的,當然如果子類和父類的__init__函數都想調用,可以在子類的__init__函數中加入對父類__init__函數的調用。

9、我們在使用時,盡量使用__init__函數,不要去自定義__new__函數,因為這兩者在繼承派生時的特性還是很不一樣的。

10、將類比作制造商,__new__方法就是前期的原材料購買環節,__init__方法就是在有原材料的基礎上,加工,初始化商品環節

【__init__方法】

Python函數__new__及__init__作用及區別解析

【__new__方法】

__new__方法接受的參數雖然也是和__init__一樣,但__init__是在類實例創建之后調用,而 __new__方法正是創建這個類實例的方法。

Python函數__new__及__init__作用及區別解析 ===》Python函數__new__及__init__作用及區別解析

具體的執行邏輯:

1. p = Person(name, age)

2. 首先執行使用name和age參數來執行Person類的__new__方法,這個__new__方法會返回Person類的一個實例(通常情況下是使用 super(Persion, cls).__new__(cls, ... ...) 這樣的方式),

3. 然后利用這個實例來調用類的__init__方法,上一步里面__new__產生的實例也就是 __init__里面的的 self。

所以,__init__ 和 __new__ 最主要的區別在于:

1.__init__ 通常用于初始化一個新實例,控制這個初始化的過程,比如添加一些屬性, 做一些額外的操作,發生在類實例被創建完以后。它是實例級別的方法。

2.__new__ 通常用于控制生成一個新實例的過程。它是類級別的方法。

【__new__的作用】

依照Python官方文檔的說法,__new__方法主要是當你繼承一些不可變的class時(比如int, str, tuple), 提供給你一個自定義這些類的實例化過程的途徑。還有就是實現自定義的metaclass。

首先我們來看一下第一個功能,具體我們可以用int來作為一個例子:

假如我們需要一個永遠都是正數的整數類型,通過集成 int,我們可能會寫出這樣的代碼。

Python函數__new__及__init__作用及區別解析

但運行后會發現,結果根本不是我們想的那樣,我們任然得到了-3。這是因為對于int這種 不可變的對象,我們只有重載它的__new__方法才能起到自定義的作用。

這是修改后的代碼:

Python函數__new__及__init__作用及區別解析

通過重載__new__方法,我們實現了需要的功能。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩不卡一区二区三区| 亚洲欧美日韩综合国产aⅴ| 日韩av中文字幕一区二区| 日本欧美在线看| 亚洲一区二区三区无吗| 日本午夜精品久久久| 国产精品羞羞答答在线观看| 美女视频网站久久| 久久亚洲精品中文字幕蜜潮电影| 午夜久久一区| 日本欧美一区二区| 欧美激情99| 欧美影院三区| 少妇精品久久久一区二区三区| 国产欧美成人| 麻豆视频久久| 免费污视频在线一区| 夜夜嗨一区二区三区| 日韩精品高清不卡| 国产精品国产一区| 伊人久久亚洲影院| 国产午夜精品一区在线观看| 一本大道色婷婷在线| 亚洲免费专区| 国产精品久久久久蜜臀| 五月综合激情| 国产亚洲字幕| 99久久精品网站| 亚洲天堂免费| 久久电影tv| 水野朝阳av一区二区三区| 欧美片第1页综合| 久久久久一区| 国产精品66| 美日韩精品视频| 国内在线观看一区二区三区| 久久福利影视| 日韩理论片av| 欧美日韩中出| 亚洲激情黄色| 日韩av在线播放网址| 亚洲免费资源| 91精品亚洲| 国产伦理一区| 久久www成人_看片免费不卡| 美女视频网站久久| 在线看片一区| 亚洲一级黄色| 国产精品二区不卡| 日本不卡在线视频| 亚洲激情av| 中文字幕在线看片| 国产欧美在线| 蜜桃一区二区三区在线| 久草免费在线视频| 国产日产一区| 亚洲在线电影| 99国产精品视频免费观看一公开 | 国产欧美日韩| 蜜桃av一区二区在线观看| 91精品蜜臀一区二区三区在线| 国产精品一站二站| 亚州精品视频| 在线亚洲观看| 久久国产亚洲| sm久久捆绑调教精品一区| 国产精品地址| 国产欧美一区| 四虎成人精品一区二区免费网站| 黄色精品网站| 亚洲午夜一级| 久久视频精品| 久久中文字幕av一区二区不卡| 国产精品调教| 日韩精品一区二区三区免费视频| 国产精品老牛| 尤物网精品视频| 91成人精品视频| 亚洲手机在线| 欧美精品九九| 99国产精品视频免费观看一公开| 日韩在线不卡| 免费高潮视频95在线观看网站| 精品欧美视频| 国产一区二区三区四区二区| 韩日一区二区| a国产在线视频| 日韩国产欧美| 秋霞影院一区二区三区| 香蕉成人av| 欧美成人久久| 亚洲主播在线| 日韩午夜视频在线| 欧美色综合网| 国产精品久久久久77777丨| 日韩av网站在线免费观看| 婷婷精品久久久久久久久久不卡| 亚洲精品动态| 国产日韩视频在线| 精品视频97| 日韩欧美一区二区三区免费观看| 亚洲涩涩在线| 好看的亚洲午夜视频在线| 亚洲欧洲一区二区天堂久久| 免费日韩av片| 日本国产欧美| 精品中国亚洲| 青青青免费在线视频| 99精品电影| 首页欧美精品中文字幕| 日韩手机在线| 丰满少妇一区| 九一成人免费视频| 无码日韩精品一区二区免费| 国产欧美日韩一级| 国产成人免费精品| 亚洲特色特黄| 日本不卡高清| 欧美a在线观看| 欧洲一区二区三区精品| 在线亚洲观看| 国产欧美91| 成人羞羞视频播放网站| 免费久久精品视频| 国产精品亲子伦av一区二区三区| 精品久久一区| 精品欧美久久| 久久精品99国产精品| 国产精品xx| 男人的天堂亚洲一区| 国产日韩中文在线中文字幕 | 国产 日韩 欧美 综合 一区| 久久精品99久久无色码中文字幕| 久久高清免费观看| 久久精品毛片| 999在线观看精品免费不卡网站| 日韩激情啪啪| 成人午夜精品| 亚洲精品伊人| 日韩免费久久| 日韩国产在线不卡视频| 日韩不卡免费高清视频| 日韩中出av| 日韩国产欧美一区二区| 中文字幕成人| 亚洲电影有码| 国产精品免费不| 亚洲一区成人| 色爱综合网欧美| 日韩综合一区二区三区| 99成人在线视频| 久久中文字幕导航| 亚洲视频国产精品| 日本久久成人网| 国产精品一区二区三区av麻| 2023国产精品久久久精品双| 老司机免费视频一区二区| 日韩中文字幕区一区有砖一区| 久久精品资源| 亚洲精品影视| 女人天堂亚洲aⅴ在线观看| 另类综合日韩欧美亚洲| 亚洲色图综合| 欧美精品羞羞答答| 超碰成人av| 欧美黄色精品| 日韩va亚洲va欧美va久久| 亚洲精品在线观看91| 国产黄大片在线观看| 欧美在线不卡| 一区二区电影在线观看| 激情欧美一区二区三区| 日韩av二区| 麻豆久久久久久| 日韩欧美久久| 噜噜噜久久亚洲精品国产品小说| 欧美日韩免费观看视频| 久久精品九色| 国产精品久久乐| 日韩免费精品| 免费一级片91| 亚洲一区激情| 黄色不卡一区| 激情欧美丁香| 久久中文视频| 久久理论电影| 99精品视频精品精品视频| 国产欧洲在线| 97精品国产福利一区二区三区| 欧美另类中文字幕 | 色婷婷狠狠五月综合天色拍| 精品视频高潮| 久久精品国产99国产精品| 国产精品一区二区三区av| 7777精品| 国产欧美日韩综合一区在线播放| 日韩激情av在线| 青草国产精品| 久久精品99久久久| 国产精品久av福利在线观看|