如何給女朋友解釋什么是OOP編程中的繼承

情感導(dǎo)師 5084

 添加導(dǎo)師微信MurieL0304

獲取更多愛情挽回攻略 婚姻修復(fù)技巧 戀愛脫單干貨

本文主要分享python語言有關(guān)繼承的相關(guān)知識(shí)點(diǎn),包括父類,子類相關(guān)概念,子類如何繼承父類的屬性和方法,并在最后單獨(dú)介紹了子類如何正確處理__init__的參數(shù)繼承問題

01女朋友的疑問

剛放下電話···

女朋友:"剛才你怎么在電話里說了好多次什么'雞肋雞肋'的,難道你寫的項(xiàng)目沒啥用,要被開除了?

如何給女朋友解釋什么是OOP編程中的繼承

我:“???!?。∈裁措u肋,什么項(xiàng)目要黃了,你說啥呢”

女朋友:“就你剛才說的什么啥啥啥是雞肋,啥啥啥繼承啥的,我也聽不懂,我以為出啥事了呢?”

我:“沒事,那是我們的專業(yè)術(shù)語,是基礎(chǔ)的基,類別的類,不是你愛吃的那個(gè)雞肋”(一個(gè)白眼甩過去)

女朋友:“這名起的,和‘沒用’掛上鉤了,啥意思,你給我普及一下,我也長長見識(shí)”

我:“簡單,通過繼承創(chuàng)建的類叫派生類,被繼承類的就叫做稱為基類,balabala····”

正當(dāng)我說的激情四射的時(shí)候,一個(gè)抱枕甩了過來,女朋友:“說人話?。 ?/p>

我:“中國有句俗語,龍生龍,鳳生鳳,老鼠的兒子會(huì)打動(dòng)洞,這句話聽過吧”

女朋友:“廢話,接著說···”

我:“剛才說的龍,鳳,老鼠(每句話的第一個(gè)龍,鳳,老鼠),就可以理解為我剛才說的基類,負(fù)責(zé)將他們各自物種所具有的特征,所擁有的技能傳下去,比如老鼠爸爸只能生老鼠兒子,而不能生個(gè)龍兒子出來,而且生出來的老鼠寶寶,除了會(huì)遺傳老鼠爸爸的所有物理特征,也會(huì)擁有打洞的技能,balabala···像這種類似模版一樣,規(guī)范好特征和技能,當(dāng)別人要去創(chuàng)建和你類似的項(xiàng)目的時(shí)候,直接基于這個(gè)模版就行了,至于需要添加什么新的屬于自己特色的特征或者技能,就只需要在自己的項(xiàng)目上單獨(dú)添加就行了”

女朋友:“原來是這么回事,聽起來也不難嘛,一分鐘我就學(xué)會(huì)了,真是個(gè)小天才”

我:···

02什么是編程中的繼承

我們都知道,面向?qū)ο缶幊痰恼Z言具有三大特性,封裝,繼承,多態(tài)。其中最根本的就是“繼承”。在python這門語言中,繼承是針對于類來說的,是指一個(gè)類要使用另一個(gè)類中構(gòu)造的代碼

03為什么要使用繼承

使用更少的代碼快速實(shí)現(xiàn)另一個(gè)已存在的類的所有功能復(fù)用重復(fù)的代碼,減少冗余

04如何正確地使用繼承

先介紹下繼承關(guān)系中的基類和派生類

1) 基類(父類)

任何一個(gè)類都可以作為父類存在,但這并不代表著你可以隨意的創(chuàng)建類去當(dāng)作父類使用。一般父類要抽象成具有某一類基礎(chǔ)特征和基礎(chǔ)技能的集合,這樣才能夠保證當(dāng)其他類繼承這個(gè)父類的時(shí)候,不僅僅擁有父類所有的基礎(chǔ)功能,還可以擴(kuò)展屬于自己的特殊屬性或方法

比如說我們想構(gòu)建一個(gè)鳥類,鳥共有的特征:可以飛,可以叫,都有翅膀,都有名字(假設(shè)),那么像麻雀,燕子,啄木鳥等細(xì)分出來的鳥就可以繼承自鳥類,一旦繼承,自然擁有了鳥類所擁有的基礎(chǔ)技能

建立父類的方法與建立其他任何類的方法都相同,只是我們需要考慮的是一旦創(chuàng)建子類,子類將要使用哪些方法,接下來介紹子類

2) 派生類(子類)

子類是指從父類繼承的類,也就是說,每個(gè)子類都將能夠利用父類的方法和變量,那么子類如何使用,分以下幾個(gè)層次說明

a) 0x00 基礎(chǔ)繼承

比如我現(xiàn)在想要?jiǎng)?chuàng)建一個(gè)鴕鳥類,那么鴕鳥類就可以直接使用鳥類的fly方法或者chirping方法,而不需要在自己的類中進(jìn)行聲明,代碼如下

我們創(chuàng)建了一個(gè)Ostrich類,它正確的使用了Bird類的每個(gè)方法,即使我們沒有在Ostrich子類中定義這些方法。我們只需要將“ mary”的值傳遞給first_name變量就可以創(chuàng)建一個(gè)叫'mary'的鴕鳥對象了。

b) 0x01 構(gòu)建專屬方法

當(dāng)然,我們除了可以使用父類所有的功能,我們還可以拓展自己所特有的技能,在自己的類中進(jìn)行實(shí)現(xiàn)即可

比如,我們給鴕鳥增加一個(gè)跑的動(dòng)作

c) 0x02 重寫父類方法

有時(shí)候父類的公共方法可能不太適用于當(dāng)前的子類,而子類也需要使用這個(gè)父類方法,那么就可以通過在子類中重寫父類方法實(shí)現(xiàn)

比如說,鴕鳥也會(huì)飛,但是飛的不高,這個(gè)就需要重寫fly方法去覆蓋父類方法

看吧,我們的實(shí)例通過調(diào)用自己的fly方法,實(shí)現(xiàn)了定制化

d) 0x03 關(guān)于初始化方法__init__的參數(shù)問題

前面一直沒講實(shí)例化方法的參數(shù)問題,但是我相信肯定有些人會(huì)表示對這個(gè)參數(shù)怎么使用有點(diǎn)邏輯亂,所以專門拿到最后來說,以下分幾點(diǎn)解釋下

子類參數(shù)意義: 在你的子類中,初始化方法中所有的參數(shù)都是給你自己用的,跟父類的參數(shù)無關(guān)。也就是說,比如鳥類傳進(jìn)去first_name為'mary',那代表著一只叫mary的鳥,而你在鴕鳥類同樣傳'mary',那么此時(shí)就是一只叫做mary的鴕鳥,和mary的鳥沒有一毛錢關(guān)系父類位置參數(shù)處理: 父類構(gòu)建一個(gè)對象所需要的必須參數(shù),作為子類也必須要有。因?yàn)樽宇愂腔诟割惖某跏蓟椒ㄟM(jìn)行構(gòu)建對象,那么父類需要什么條件初始化,也就代表著子類同樣需要什么條件初始化,比如下面這樣

父類的默認(rèn)參數(shù)(給了默認(rèn)值的參數(shù))處理

子類的參數(shù)可以使用*args,**kwargs

總結(jié)(__init__)來說,1.對于父類初始化方法中的參數(shù)不是特別多的情況下,建議都帶上,至于值,可以直接取父類的默認(rèn)值,也可以自己定義當(dāng)前類所需要的值;2.如果參數(shù)比較多,那這種一般默認(rèn)值也非常多,那么可以只帶必須要傳的參數(shù)(比如位置參數(shù)),其余默認(rèn)值不帶,如果需要使用個(gè)別默認(rèn)值,單獨(dú)帶著使用并賦值即可;3.如果真是太懶了,又都是自己的項(xiàng)目,對自己的繼承非常熟悉了,可以直接寫位置參數(shù),其余用*args,**kwargs代替

我是一名奮戰(zhàn)在編程界的pythoner,工作中既要和數(shù)據(jù)打交道,也要和erp系統(tǒng),web網(wǎng)站保持友好的溝通……時(shí)不時(shí)的會(huì)分享一些提高效率的編程小技巧,在實(shí)際應(yīng)用中遇到的問題以及解決方案,或者源碼的閱讀等等,歡迎大家一起來討論!如果覺得寫得還不錯(cuò),歡迎關(guān)注點(diǎn)贊,謝謝。

評論列表

頭像
2024-08-31 01:08:07

確實(shí)不錯(cuò),挽回了不少瀕臨離婚的家庭!

頭像
2024-05-20 20:05:11

被拉黑了,還有希望么?

頭像
2024-05-08 15:05:26

被拉黑了,還有希望么?

頭像
2023-10-22 13:10:22

被拉黑了,還有希望么?

 添加導(dǎo)師微信MurieL0304

獲取更多愛情挽回攻略 婚姻修復(fù)技巧 戀愛脫單干貨

發(fā)表評論 (已有4條評論)