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

您的位置:首頁技術(shù)文章
文章詳情頁

Python函數(shù)__new__及__init__作用及區(qū)別解析

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

【同】

二者均是Python面向?qū)ο笳Z言中的函數(shù),__new__比較少用,__init__則用的比較多。

【異】

__new__是在實例創(chuàng)建之前被調(diào)用的,因為它的任務(wù)就是創(chuàng)建實例然后返回該實例對象,是個靜態(tài)方法。__init__是當(dāng)實例對象創(chuàng)建完成后被調(diào)用的,然后設(shè)置對象屬性的一些初始值,通常用在初始化一個類實例的時候。是一個實例方法。

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

Python函數(shù)__new__及__init__作用及區(qū)別解析

===》》》Python函數(shù)__new__及__init__作用及區(qū)別解析

【一些說明】

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

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

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

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

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

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

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

8、對于子類的__init__,其調(diào)用規(guī)則跟__new__是一致的,當(dāng)然如果子類和父類的__init__函數(shù)都想調(diào)用,可以在子類的__init__函數(shù)中加入對父類__init__函數(shù)的調(diào)用。

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

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

【__init__方法】

Python函數(shù)__new__及__init__作用及區(qū)別解析

【__new__方法】

__new__方法接受的參數(shù)雖然也是和__init__一樣,但__init__是在類實例創(chuàng)建之后調(diào)用,而 __new__方法正是創(chuàng)建這個類實例的方法。

Python函數(shù)__new__及__init__作用及區(qū)別解析 ===》Python函數(shù)__new__及__init__作用及區(qū)別解析

具體的執(zhí)行邏輯:

1. p = Person(name, age)

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

3. 然后利用這個實例來調(diào)用類的__init__方法,上一步里面__new__產(chǎn)生的實例也就是 __init__里面的的 self。

所以,__init__ 和 __new__ 最主要的區(qū)別在于:

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

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

【__new__的作用】

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

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

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

Python函數(shù)__new__及__init__作用及區(qū)別解析

但運行后會發(fā)現(xiàn),結(jié)果根本不是我們想的那樣,我們?nèi)稳坏玫搅?3。這是因為對于int這種 不可變的對象,我們只有重載它的__new__方法才能起到自定義的作用。

這是修改后的代碼:

Python函數(shù)__new__及__init__作用及區(qū)別解析

通過重載__new__方法,我們實現(xiàn)了需要的功能。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
天堂精品久久久久| 精品国模一区二区三区| 久久精品二区三区| 久久久9色精品国产一区二区三区| 麻豆国产精品777777在线| 欧美日韩网址| 久久国产精品美女| 精品国产一区二| 日韩久久电影| 欧美搞黄网站| 亚洲综合图色| 国产伦精品一区二区三区千人斩| 国产麻豆精品| 日韩1区在线| 精品久久网站| 久久久成人网| 亚洲欧美日韩国产综合精品二区| 日韩精品一二三| 日本aⅴ精品一区二区三区 | 亚洲免费毛片| 亚洲3区在线| 国产亚洲电影| zzzwww在线看片免费| 在线视频观看日韩| 视频一区免费在线观看| 欧美在线不卡| 欧美精品99| 亚洲天堂1区| 伊人www22综合色| 国产精品成人一区二区网站软件| 欧美日韩国产观看视频| 一区在线观看| 国产亚洲人成a在线v网站 | 国产精品任我爽爆在线播放| 精品一区av| 极品日韩av| 日韩高清国产一区在线| 日韩1区在线| 香蕉久久夜色精品国产| 69堂精品视频在线播放| 水蜜桃精品av一区二区| 尤物网精品视频| 久久国产婷婷国产香蕉| 播放一区二区| 欧美中文高清| 久久人人精品| 久久精品 人人爱| 99久久夜色精品国产亚洲1000部| 中文字幕成人| 激情黄产视频在线免费观看| 香蕉视频成人在线观看| 卡一精品卡二卡三网站乱码| 欧美日韩国产高清| 国产精品日韩精品在线播放| 99久久99久久精品国产片果冰| 午夜久久av| 日韩网站中文字幕| 欧美日韩一区二区三区不卡视频 | 日本综合字幕| 中文视频一区| 国产黄大片在线观看| 亚洲一区二区三区久久久| 国产一区二区三区四区二区| 国产美女一区| 成人在线视频中文字幕| 一区二区不卡| av在线日韩| 国产精品第一| 只有精品亚洲| 99精品小视频| 福利一区和二区| 日韩av三区| 在线视频亚洲| 国产va在线视频| 亚洲精品进入| 欧美不卡高清| 神马久久午夜| 国产精品久久免费视频| 麻豆9191精品国产| 日韩欧美精品一区| 国产精品黄色| 一级成人国产| 欧美女激情福利| 麻豆精品蜜桃| 国产一区精品福利| 国产日韩欧美高清免费| 美女尤物久久精品| 日韩三区免费| 国产一区二区三区四区| 青青草国产成人99久久| 欧美精品一线| 美女网站视频一区| 国产成人精品一区二区免费看京 | 精品一区二区三区亚洲| 日韩高清三区| 日韩精品一级二级| 最新亚洲激情| 99久久精品费精品国产| 精品丝袜久久| 国产伦理久久久久久妇女| 亚洲欧洲专区| 亚洲不卡系列| 久久久久久免费视频| 在线精品视频在线观看高清| 成人污污视频| 青草久久视频| 日韩国产一二三区| 一区二区三区四区在线观看国产日韩| 亚洲高清av| 999精品色在线播放| av高清不卡| 另类专区亚洲| av高清不卡| 国产一区二区三区四区| 美女在线视频一区| 欧美aa在线视频| 你懂的亚洲视频| 精品国产乱码久久久| 精品精品99| 欧美成人精品三级网站| 国产成人精品亚洲日本在线观看| 国产一区调教| 伊伊综合在线| 136国产福利精品导航网址| 久久麻豆精品| 欧美福利在线| 蜜乳av另类精品一区二区| 羞羞答答国产精品www一本 | 91精品综合| 国产精品99免费看| 午夜久久免费观看| 日韩午夜av| 亚洲欧美日韩一区在线观看| 香蕉久久久久久久av网站| 亚洲日产av中文字幕| 亚洲综合图色| 国产欧美日韩在线观看视频| 久久av影院| 国产一区二区三区黄网站| 日韩中文首页| 国产综合精品| 日韩视频精品在线观看| 亚洲一区久久| 日韩精品久久理论片| 国产精品毛片久久久| 国产v日韩v欧美v| 美女少妇全过程你懂的久久| 香蕉久久久久久久av网站| 日韩不卡手机在线v区| 国产女人18毛片水真多18精品| 精品美女视频 | 国产精品久久亚洲不卡| 色一区二区三区四区| 欧美日韩国产免费观看视频| 国产精品三上| 国产欧美日韩影院| 欧美激情国产在线| 国产亚洲毛片| 久久国产三级精品| 都市激情国产精品| 国产一区白浆| 清纯唯美亚洲综合一区| 国产专区精品| 欧美va天堂在线| 日韩精品高清不卡| 给我免费播放日韩视频| 最新日韩av| 国产精品1区在线| 久久久精品久久久久久96| 亚洲精品三级| 国产在线观看www| 日韩在线卡一卡二| 国际精品欧美精品| 麻豆久久精品| 色婷婷色综合| 亚洲精品影院在线观看| 国产精品精品国产一区二区| 欧美特黄一区| 欧美日韩调教| 亚洲va在线| 青青草精品视频| 亚洲午夜在线| 久久国产尿小便嘘嘘| 国产91精品对白在线播放| 日韩av字幕| 午夜影院欧美| 久久精品国产福利| 99亚洲视频| 成人午夜网址| 天海翼精品一区二区三区| 日韩伦理一区| 欧美午夜三级| 制服诱惑一区二区| 久久成人福利| 中文精品在线| 日韩美女一区二区三区在线观看| 日本强好片久久久久久aaa| 久久亚洲精品中文字幕蜜潮电影| 国产欧美日韩一区二区三区四区| 五月天久久网站|