色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python到底是如何實(shí)現(xiàn)繼承的呢

冬至配餃子 ? 來(lái)源:多蘭多 ? 作者:Toranto ? 2022-08-18 15:46 ? 次閱讀

繼承

通過(guò)__init__類(lèi)構(gòu)造方法我們可以看出,我們定義出來(lái)的蓋倫類(lèi)和瑞文類(lèi)存在代碼冗余的現(xiàn)象,而我們寫(xiě)程序,最好是以簡(jiǎn)潔為目的。如果兩個(gè)程序都能達(dá)到相同的目標(biāo),一個(gè)五百行代碼,而另一個(gè)只有三百行代碼,毫無(wú)疑問(wèn)我們選擇后者。而且這也很方便我們查閱修改。

所謂繼承,就是重用現(xiàn)有類(lèi)的功能,并在此基礎(chǔ)上進(jìn)行擴(kuò)展,將相關(guān)類(lèi)的共性進(jìn)行抽象、統(tǒng)一概念,隔離變化。

小明:“不會(huì)講話(huà)你就多講點(diǎn)。”

簡(jiǎn)單地說(shuō),在python中,新建的類(lèi)可以繼承一個(gè)或者多個(gè)類(lèi)。父類(lèi)又可以稱(chēng)為基類(lèi)或者超類(lèi),新建的類(lèi)稱(chēng)為派生類(lèi)或者子類(lèi)。

pYYBAGL97LqAP5eyAABs6DCMw1M861.png

簡(jiǎn)單地說(shuō),在python中,新建的類(lèi)可以繼承一個(gè)或者多個(gè)類(lèi)。父類(lèi)又可以稱(chēng)為基類(lèi)或者超類(lèi),新建的類(lèi)稱(chēng)為派生類(lèi)或者子類(lèi)。

poYBAGL97MSAQHkHAABl-ykIZS8247.pngpYYBAGL97PiAH9NtAACuPQjgkjw695.png


繼續(xù)昨天的蓋倫類(lèi)和瑞文類(lèi):

pYYBAGL97RKADbKaAAEXjbnSljQ718.png


繼承的原理(了解)

那么Python到底是如何實(shí)現(xiàn)繼承的呢?

對(duì)于你定義的每一個(gè)類(lèi),python會(huì)計(jì)算出一個(gè)方法解析順序(MRO)列表,python會(huì)在MRO列表上從左到右開(kāi)始查找基類(lèi),直到找到第一個(gè)匹配這個(gè)屬性的為止。而這個(gè)MRO列表的構(gòu)造是通過(guò)一個(gè)C3線(xiàn)性化算法來(lái)實(shí)現(xiàn)的。我們不去深究這個(gè)算法的數(shù)學(xué)原理,只需要知道C3算法計(jì)算出來(lái)的列表,我找屬性應(yīng)該遵循什么樣的原則:1、子類(lèi)會(huì)先于父類(lèi)被檢查;

2、多個(gè)父類(lèi)會(huì)根據(jù)它們?cè)贛RO列表中的順序被檢查;3、如果下一個(gè)類(lèi)存在兩個(gè)合法的選擇(父類(lèi)里面有重名的)選擇第一個(gè)父類(lèi)。

Python當(dāng)中這個(gè)列表的產(chǎn)生,決定了你屬性查找的方式,這個(gè)查找的方式分成兩種:

深度優(yōu)先(先深入繼承樹(shù)左側(cè)查找,然后再返回,開(kāi)始查找右側(cè))和廣度優(yōu)先(先從左到右水平方向上查找,最后再深入繼承樹(shù)右側(cè)查找)。本質(zhì)查找還是按照MRO列表,深度優(yōu)先和廣度優(yōu)先的區(qū)別就是排列方式不一樣。

在Python中類(lèi)是分為兩種的,新式類(lèi)和經(jīng)典類(lèi)。這個(gè)區(qū)分只有pyhon2中才有,在python3里面已經(jīng)沒(méi)有經(jīng)典類(lèi)一說(shuō),都是新式類(lèi)。

那么到底什么是新式類(lèi)、經(jīng)典類(lèi)?

python2才有新式類(lèi)和經(jīng)典類(lèi)的概念(繼承了object的類(lèi)就是新式類(lèi),反之就是經(jīng)典類(lèi))。python3統(tǒng)一都是新式類(lèi),也就是都繼承了object。

pYYBAGL97TaAdLVEAABPTsyClSM208.pngpoYBAGL97USAO6xcAAB2AFj4MIc147.pngpoYBAGL97V-AFEt1AABW2tNwdxI807.pngpYYBAGL97WOAbcY3AABhru66Ljk883.png

小明:“那個(gè),那個(gè),那個(gè)什么object的玩意兒是什么東西?”

Toranto:“我也不知道...”

小明:“來(lái),吃藥?!?/p>

在Python2中,默認(rèn)都是經(jīng)典類(lèi),只有顯示繼承了object的才是新式類(lèi):

poYBAGL97YCASXUMAAAypVpavFE146.png

在Python3中,取消了經(jīng)典類(lèi),默認(rèn)都是新式類(lèi),并且新式類(lèi)不需要顯示繼承object對(duì)象。如下,這三種寫(xiě)法都可以,無(wú)區(qū)別:

poYBAGL97ZCAI8dFAAA1asGJVYk268.png

多態(tài)

我們都知道,在python中,當(dāng)一個(gè)變量被多次賦值的時(shí)候,它的傳達(dá)結(jié)果會(huì)表現(xiàn)為最后一次賦值,這是很典型的弱語(yǔ)言。

pYYBAGL97aaAY6cOAABYoimcdlA336.png


我們先后調(diào)用了Dog和Cat中的eat方法,a被先后賦值為“吃骨頭”,“吃魚(yú)”,但這并不是多態(tài)。

類(lèi)的多態(tài)特性,需要滿(mǎn)足以下兩個(gè)條件:

1、繼承:多態(tài)一定是發(fā)生在父類(lèi)和子類(lèi)之間;

2、重寫(xiě):子類(lèi)重寫(xiě)了父類(lèi)的方法。

poYBAGL97b2AbL7mAAB65FwNiqM902.png

可以看到,Dog和Cat都繼承自Animal類(lèi),且各自都重寫(xiě)了父類(lèi)eat()方法。從運(yùn)行結(jié)果可以看出,同一變量 a 在執(zhí)行同一個(gè) say() 方法時(shí),由于 a 實(shí)際表示不同的類(lèi)實(shí)例對(duì)象,因此 a.say() 調(diào)用的并不是同一個(gè)類(lèi)中的 say() 方法,這就是多態(tài)。

換句話(huà)說(shuō),子類(lèi)一旦重新定義了自己的屬性或方法且與父類(lèi)重名,那么調(diào)用新增的屬性或方法時(shí),就以自己為準(zhǔn)了。

但有時(shí)候,在多態(tài)形成之后,我們又需要重新調(diào)用父類(lèi)的同名方法時(shí),我們有兩個(gè)選擇:

方法一:“指名道姓”地調(diào)用某個(gè)類(lèi)的功能(函數(shù))。

pYYBAGL97dOAO62tAABu9u18_7k246.png

方法二:super(),調(diào)用super()會(huì)得到一個(gè)特殊的對(duì)象,該對(duì)象專(zhuān)門(mén)用來(lái)引用父類(lèi)的屬性。

poYBAGL97eOAJUnOAABzygoRMFY266.png



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4628

    瀏覽量

    93183
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4807

    瀏覽量

    84938
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ADS1278的參考電壓的要求到底是怎樣的?

    <27MHz為例,Vrefp輸入范圍為0.5到3.1V 而后文又提到,參考輸入電壓的范圍為AGND-0.4v to AVDD+0.4v 問(wèn)題1. 這個(gè)參考電壓的要求到底是怎樣的? 問(wèn)題2.
    發(fā)表于 01-23 08:02

    TLV320AIC3254內(nèi)部中的ADC處理模塊和minidsp到底是什么關(guān)系?

    我想請(qǐng)問(wèn)一下幾個(gè)問(wèn)題: 1.3254內(nèi)部中的ADC處理模塊和minidsp到底是什么關(guān)系,是并列的還是串行關(guān)系?還是ADC處理模塊就是minidsp特殊情況下的部分? 2.minidsp的抽取因子該怎么理解,到底怎么使用?
    發(fā)表于 10-31 06:02

    請(qǐng)問(wèn)TPA3130D2的芯片絲印到底是PTPA3130還是TPA3130呀?

    TPA3130D2的芯片絲印到底是PTPA3130還是TPA3130呀
    發(fā)表于 10-23 06:13

    請(qǐng)問(wèn)PCM2903C的溫度范圍到底是多少?

    如下圖,PCM2903C的溫度范圍到底是多少? 如果用在-25~85℃,是否會(huì)出問(wèn)題?
    發(fā)表于 10-14 07:14

    放大器的共模輸入電壓到底是指什么?

    請(qǐng)問(wèn)放大器的共模輸入電壓到底是指什么?
    發(fā)表于 09-19 07:17

    功放和運(yùn)放到底是什么區(qū)別?

    想請(qǐng)問(wèn)一下功放和運(yùn)放到底是什么區(qū)別,感覺(jué)只要接一個(gè)小負(fù)載,運(yùn)放的輸出電流也可以很大???到底有什么區(qū)別啊
    發(fā)表于 09-10 07:00

    請(qǐng)問(wèn)LMV772到底是雙電源還是單電源???

    請(qǐng)問(wèn)LMV772到底是雙電源還是單電源?。渴謨?cè)前面寫(xiě)的太模糊了。求指教
    發(fā)表于 09-09 07:10

    運(yùn)放的輸入電容到底是什么?

    我想請(qǐng)問(wèn)一下運(yùn)放的輸入電容到底是什么?
    發(fā)表于 09-04 06:52

    LMH6502的輸入電壓到底是多少?

    LMH6502的輸入電壓到底是多少,我稍微給如大一點(diǎn)點(diǎn)的信號(hào),放大不行還能接受,我衰減都失真,
    發(fā)表于 08-27 07:02

    運(yùn)放旁路電容必須靠近芯片引腳的原因到底是什么?

    運(yùn)放旁路電容必須靠近芯片引腳的原因到底是什么?有的說(shuō)是怕走線(xiàn)的電感與旁路電容形成諧振,旁路電容靠近運(yùn)放的時(shí)候走線(xiàn)的電感不應(yīng)該更大了嗎(走線(xiàn)越長(zhǎng),走線(xiàn)的寄生電感也就越大)
    發(fā)表于 08-01 06:56

    如何實(shí)現(xiàn)Python復(fù)制文件操作

    Python 中有許多“開(kāi)蓋即食”的模塊(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在這篇文章中,你將會(huì)看到一些用 Python 實(shí)現(xiàn)文件復(fù)制的特殊方法。下面我們開(kāi)始學(xué)習(xí)這九種不同的方法來(lái)
    的頭像 發(fā)表于 07-18 14:53 ?457次閱讀

    對(duì)于STM8的固件庫(kù),到底是怎么對(duì)文件進(jìn)行配置的?

    對(duì)于STM8的固件庫(kù),到底是怎么對(duì)文件進(jìn)行配置的?
    發(fā)表于 05-17 15:59

    請(qǐng)問(wèn)STM8L052R8的EEPROM到底是幾個(gè)block?

    哪位知道STM8L052R8的EEPROM到底是幾個(gè)block,手冊(cè)上寫(xiě)的不清不楚,按FLASH說(shuō)的話(huà),052應(yīng)該是高密度的,但是EEPROM只有256B,所以很亂,具體也不知道分為幾塊
    發(fā)表于 05-11 08:29

    共享單車(chē)到底是什么通信原理

    我們經(jīng)常騎的共享單車(chē)到底是什么通信原理,有人了解過(guò)嗎? 一、智能車(chē)鎖 共享單車(chē)最核心的硬件是智能車(chē)鎖,主要用于實(shí)現(xiàn)控制和定位功能。
    發(fā)表于 04-09 10:33 ?895次閱讀
    共享單車(chē)<b class='flag-5'>到底是</b>什么通信原理

    共享單車(chē)到底是什么通信原理?

    我們經(jīng)常騎的共享單車(chē)到底是什么通信原理,有人了解過(guò)嗎?下面寶藍(lán)小編就帶大家了解下。
    的頭像 發(fā)表于 02-25 10:32 ?1470次閱讀
    共享單車(chē)<b class='flag-5'>到底是</b>什么通信原理?
    主站蜘蛛池模板: 亚洲欧美成人| 国产成人女人在线视频观看| 伊人久久久久久久久香港| 在线免费观看成年人视频| 中国xxxxx69| 97人摸人人澡人人人超一碰| 99久久精品一区二区三区| 百性阁论坛首页| 国产精品女上位在线观看| 好满射太多了装不下了视频 | 消息称老熟妇乱视频一区二区| 亚洲AV精品乱码专区| 一受多攻高h| jizz中国女人| 国产精品自拍| 久久水蜜桃亚洲AV无码精品偷窥| 奶水太多h室友| 丝袜美女被艹| 一个人在线观看的视频| caoporon超碰在线视频| 国产AV亚洲国产AV麻豆| 精品无码一区二区三区中文字幕| 男生jj插入女生jj| 午夜福利免费0948视频| 月夜直播免费观看全集| 超碰97av 在线人人操| 好大好爽CAO死我了BL| 欧美疯狂做受xxxxx喷水| 国产又黄又粗又爽又色的视频软件| 精品国产午夜福利在线观看蜜月 | 成人手机在线| 好男人好资源在线观看| 男人天堂黄色| 羞羞影院午夜男女爽爽免费| 最美白嫩的极品美女ASSPICS| 俄罗斯老妇女BBXX| 久久精品国产只有精品| 日韩精品AV一区二区三区| 亚洲偷自拍精品视频在线观看| 99久久中文字幕伊人情人| 国产综合无码一区二区色蜜蜜|