国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Python到底是如何實現繼承的呢

冬至配餃子 ? 來源:多蘭多 ? 作者:Toranto ? 2022-08-18 15:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

繼承

通過__init__類構造方法我們可以看出,我們定義出來的蓋倫類和瑞文類存在代碼冗余的現象,而我們寫程序,最好是以簡潔為目的。如果兩個程序都能達到相同的目標,一個五百行代碼,而另一個只有三百行代碼,毫無疑問我們選擇后者。而且這也很方便我們查閱修改。

所謂繼承,就是重用現有類的功能,并在此基礎上進行擴展,將相關類的共性進行抽象、統一概念,隔離變化。

小明:“不會講話你就多講點?!?/p>

簡單地說,在python中,新建的類可以繼承一個或者多個類。父類又可以稱為基類或者超類,新建的類稱為派生類或者子類。

pYYBAGL97LqAP5eyAABs6DCMw1M861.png

簡單地說,在python中,新建的類可以繼承一個或者多個類。父類又可以稱為基類或者超類,新建的類稱為派生類或者子類。

poYBAGL97MSAQHkHAABl-ykIZS8247.pngpYYBAGL97PiAH9NtAACuPQjgkjw695.png


繼續昨天的蓋倫類和瑞文類:

pYYBAGL97RKADbKaAAEXjbnSljQ718.png


繼承的原理(了解)

那么Python到底是如何實現繼承的呢?

對于你定義的每一個類,python會計算出一個方法解析順序(MRO)列表,python會在MRO列表上從左到右開始查找基類,直到找到第一個匹配這個屬性的為止。而這個MRO列表的構造是通過一個C3線性化算法來實現的。我們不去深究這個算法的數學原理,只需要知道C3算法計算出來的列表,我找屬性應該遵循什么樣的原則:1、子類會先于父類被檢查;

2、多個父類會根據它們在MRO列表中的順序被檢查;3、如果下一個類存在兩個合法的選擇(父類里面有重名的)選擇第一個父類。

Python當中這個列表的產生,決定了你屬性查找的方式,這個查找的方式分成兩種:

深度優先(先深入繼承樹左側查找,然后再返回,開始查找右側)和廣度優先(先從左到右水平方向上查找,最后再深入繼承樹右側查找)。本質查找還是按照MRO列表,深度優先和廣度優先的區別就是排列方式不一樣。

在Python中類是分為兩種的,新式類和經典類。這個區分只有pyhon2中才有,在python3里面已經沒有經典類一說,都是新式類。

那么到底什么是新式類、經典類?

python2才有新式類和經典類的概念(繼承了object的類就是新式類,反之就是經典類)。python3統一都是新式類,也就是都繼承了object。

pYYBAGL97TaAdLVEAABPTsyClSM208.pngpoYBAGL97USAO6xcAAB2AFj4MIc147.pngpoYBAGL97V-AFEt1AABW2tNwdxI807.pngpYYBAGL97WOAbcY3AABhru66Ljk883.png

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

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

小明:“來,吃藥。”

在Python2中,默認都是經典類,只有顯示繼承了object的才是新式類:

poYBAGL97YCASXUMAAAypVpavFE146.png

在Python3中,取消了經典類,默認都是新式類,并且新式類不需要顯示繼承object對象。如下,這三種寫法都可以,無區別:

poYBAGL97ZCAI8dFAAA1asGJVYk268.png

多態

我們都知道,在python中,當一個變量被多次賦值的時候,它的傳達結果會表現為最后一次賦值,這是很典型的弱語言。

pYYBAGL97aaAY6cOAABYoimcdlA336.png


我們先后調用了Dog和Cat中的eat方法,a被先后賦值為“吃骨頭”,“吃魚”,但這并不是多態。

類的多態特性,需要滿足以下兩個條件:

1、繼承:多態一定是發生在父類和子類之間;

2、重寫:子類重寫了父類的方法。

poYBAGL97b2AbL7mAAB65FwNiqM902.png

可以看到,Dog和Cat都繼承自Animal類,且各自都重寫了父類eat()方法。從運行結果可以看出,同一變量 a 在執行同一個 say() 方法時,由于 a 實際表示不同的類實例對象,因此 a.say() 調用的并不是同一個類中的 say() 方法,這就是多態。

換句話說,子類一旦重新定義了自己的屬性或方法且與父類重名,那么調用新增的屬性或方法時,就以自己為準了。

但有時候,在多態形成之后,我們又需要重新調用父類的同名方法時,我們有兩個選擇:

方法一:“指名道姓”地調用某個類的功能(函數)。

pYYBAGL97dOAO62tAABu9u18_7k246.png

方法二:super(),調用super()會得到一個特殊的對象,該對象專門用來引用父類的屬性。

poYBAGL97eOAJUnOAABzygoRMFY266.png



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4784

    瀏覽量

    98038
  • python
    +關注

    關注

    57

    文章

    4876

    瀏覽量

    90024
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Python運行本地Web服務并實現遠程訪問

    本文介紹使用Python搭建本地Web服務并結合 ZeroNews 實現公網訪問。
    的頭像 發表于 02-06 11:39 ?149次閱讀
    <b class='flag-5'>Python</b>運行本地Web服務并<b class='flag-5'>實現</b>遠程訪問

    MOS管到底是什么?和三極管、繼電器有什么本質區別?

    MOS管到底是什么?和三極管、繼電器有什么本質區別?在電子設備的“心臟”部位,藏著許多默默工作的“開關選手”。它們操控著電流的通斷,決定著設備的效率與穩定性。其中,MOS管作為近年來高頻
    的頭像 發表于 01-07 13:46 ?526次閱讀
    MOS管<b class='flag-5'>到底是</b>什么?和三極管、繼電器有什么本質區別?

    Stack棧到底用來干嘛的?

    Stack_Size就是棧大小,0x00000400就是代表有1K(0x400/1024)的大小。 那這個棧到底用來干嘛的? 比如說我們函數的形參、以及函數里定義的局部變量就是存儲在棧里,所以
    發表于 12-01 08:04

    IGBT到底是什么?-從名稱入手來帶您了解

    對于工作需要用到IGBT、但從未專業學習過IGBT的人來說, IGBT到底是什么、它為什么叫IGBT、它的核心關鍵詞是什么、要怎么理解它 等一系列問題并無法一次性在某個地方獲取到,都需要查閱大量的資料,學習大量的基礎才能有個初步的了解。 為了讓更多的人在更少的時間內掌握IGBT,我將在
    的頭像 發表于 11-25 17:38 ?1506次閱讀
    IGBT<b class='flag-5'>到底是</b>什么?-從名稱入手來帶您了解

    請問Keil中的map文件到底是什么意思?

    Keil中的map文件到底是什么意思?里面是如何進行相關執行操作的
    發表于 11-25 06:59

    單片機和嵌入式,到底是什么關系?

    的關系:什么是單片機?什么是嵌入式?它們到底是不是一回事?先說說大家最先聽說的那個詞——單片機(MCU)。單片機,全稱是MicrocontrollerUnit,顧名思
    的頭像 發表于 11-14 10:28 ?1496次閱讀
    單片機和嵌入式,<b class='flag-5'>到底是</b>什么關系?

    單片機的差分信號到底是什么?

    差分信號到底是什么?通俗來講,就是驅動端發送兩個等值、反相的信號,接收端通過比較這兩個電壓的差值來判斷邏輯狀態“0”還是“1”。 差分信號的產生是由輸入源發出信號后經過緩沖器和倒相器后,所產生
    發表于 11-12 06:44

    IEC 到底是什么?為什么它能影響全球?

    IEC 到底是什么?為什么它能影響全球?
    的頭像 發表于 09-04 17:07 ?3555次閱讀

    DDS-TSN 到底是如何實現的?

    概述1.1TSN與DDS的獨立優勢與局限隨著智能網聯汽車和車載網絡架構的不斷迭代,車載網絡對實時性、確定性和高效數據分發的需求日益嚴苛。TSN和DDS的結合為車載以太網提供了確定性實時通信(TSN)與靈活數據分發(DDS)的雙重優勢,尤其適用于自動駕駛、智能座艙等高要求場景。圖1DDS協議概述其中,數據分發服務(DDS)是對象管理組織(OMG)制定的一系列標
    的頭像 發表于 08-13 10:07 ?5860次閱讀
    DDS-TSN <b class='flag-5'>到底是</b>如何<b class='flag-5'>實現</b>的?

    晶振的 “負載電容” 到底是什么

    負載電容,到底是什么? 負載電容,簡單來說,是指晶振的兩條引線連接IC塊內部及外部所有有效電容之和,我們可以將其看作晶振片在電路中串接的電容。從更專業的角度講,它是為了使晶振能夠在其標稱頻率下穩定
    的頭像 發表于 07-25 16:26 ?1064次閱讀

    請問編譯純rtos到底是選擇Linux+rtos的sdk編譯only rtos還是直接使用rtos sdk?

    編譯純rtos到底是選擇Linux+rtos的sdk編譯only rtos還是直接使用rtos sdk?
    發表于 07-11 07:22

    目前Mirco Python sdk觸摸到底支持什么驅動啊 ?

    目前的Mirco Python sdk觸摸到底支持什么驅動啊 能不能有資料詳細說明 GT911 觸摸驅動是否支持啊
    發表于 06-24 07:02

    智能盒子到底是什么東西?昇騰310深度測評:為何能成為行業新寵?

    讓人摸不著頭腦的“智能盒子”。各位搞技術、搞工程的朋友,咱們在工作中是不是經常聽到“智能盒子”這個說法?每次聽到這個詞,我猜很多人心里都在犯嘀咕:這東西到底是個啥玩意兒?難道就是個裝了點智能軟件的普通盒子?它到底有啥用?能給咱們的工作帶來啥方便?
    的頭像 發表于 04-27 10:46 ?1879次閱讀
    智能盒子<b class='flag-5'>到底是</b>什么東西?昇騰310深度測評:為何能成為行業新寵?

    一文給你講透!DA板卡到底是什么?它和主板又有哪些不同?

    大家好,我是老王,在電子行業干了十幾年,今天我就用“大白話”給大家講講DA板卡到底是啥,它和咱們常說的“主板”有啥區別。文章里會穿插一些表格和實際案例,保證你讀完不僅能懂,還能跟朋友吹牛!
    的頭像 發表于 04-24 16:48 ?2362次閱讀
    一文給你講透!DA板卡<b class='flag-5'>到底是</b>什么?它和主板又有哪些不同?

    使用燒錄器STLINK V3 mini的時候,發現14PIN的接口上面有一個GNDDETECT PIN,Type是輸出結構,這個PIN到底是干啥用的?

    我在使用燒錄器STLINK V3 mini的時候,發現14PIN的接口上面有一個GNDDETECT PIN,Type 是輸出結構,我想知道這個PIN到底是干啥用的?要怎么接才合理?
    發表于 03-14 09:39