一文輕松了解Python中類的繼承
1. 單繼承
繼承的主要作用是實(shí)現(xiàn)代碼的重用。繼承使得子類擁有父類的方法和屬性。
直接來(lái)看一個(gè)例子吧。
class animal: def eat(self): print("吃") def drink(self): print("喝") class dog(animal): def dark(self): print("汪汪叫") goudan = dog() goudan.eat() goudan.drink()
從上面的代碼可以看出,在編寫dog類的時(shí)候,我們并沒(méi)有重寫eat和drink兩個(gè)方法。我們只需要在dog后面的括號(hào)中加上父類的名字即可。當(dāng)子類繼承了父類,子類就可以直接使用父類中的方法了。在本例中,goudan可以直接使用animal類中的eat和drink兩個(gè)方法。
而且一個(gè)神奇的事情是,繼承是具有傳遞性的。子類擁有父類的方法和屬性,同時(shí)也具有父類的父類所具有的屬性。
2. 繼承中的方法重寫
有時(shí)候,父類中的方法并不能完成滿足子類的需求。這時(shí)候我們就需要方法重寫了。子類方法重寫一般有兩種情況:
- 覆蓋父類的方法
- 對(duì)父類的方法進(jìn)行擴(kuò)展
一種簡(jiǎn)單的方法是直接重寫相應(yīng)的方法。下面這個(gè)例子就是重寫了drink這個(gè)方法。當(dāng)使用goudan調(diào)用drink這個(gè)方法方法時(shí),結(jié)果并不是喝而是拿舌頭喝水。
class animal: def eat(self): print("吃") def drink(self): print("喝") class dog(animal): def drink(self): print("拿舌頭喝水") def dark(self): print("汪汪叫") goudan = dog() goudan.eat() goudan.drink()
當(dāng)我們的需求不是簡(jiǎn)單的覆蓋父類中的方法,而是在父類方法的基礎(chǔ)上對(duì)方法進(jìn)行擴(kuò)展。具體的做法是:
- 在需要的位置使用super().父類方法 來(lái)調(diào)用父類方法的執(zhí)行
- 代碼的其他位置針對(duì)子類的需求,編寫子類持有的代碼實(shí)現(xiàn)
我們來(lái)看一個(gè)例子,此時(shí)goudan在調(diào)用drink方法的時(shí)候,會(huì)輸出喝和拿舌頭喝水兩個(gè)輸出。
class animal: def eat(self): print("吃") def drink(self): print("喝") class dog(animal): def drink(self): # 1. 根據(jù)子類的需求編寫特定的代碼 print("拿舌頭喝水") # 2. 使用super繼承父類中的fangfa super().drink def dark(self): print("汪汪叫") goudan = dog() goudan.eat() goudan.drink()
3. 多繼承
對(duì)于Python而言,一個(gè)子類可以有多個(gè)父類。多繼承的基本語(yǔ)法是比較簡(jiǎn)單的。話不多說(shuō),直接看一個(gè)例子
class A(): def test(self): print("test") class B(): def demo(self): print("demo") class C(A,B): pass c = C() c.test() c.demo()
總結(jié)
到此這篇關(guān)于Python中類的繼承的文章就介紹到這了,更多相關(guān)Python類的繼承內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python棧實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換的示例詳解
棧(Stack)是計(jì)算機(jī)科學(xué)中常用的數(shù)據(jù)結(jié)構(gòu),具有眾多實(shí)際應(yīng)用,其中之一是使用棧來(lái)實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換,將一個(gè)數(shù)字從一種進(jìn)制表示轉(zhuǎn)換為另一種進(jìn)制表示,本文將深入研究棧的原理,以及如何使用Python實(shí)現(xiàn)十進(jìn)制到二進(jìn)制、八進(jìn)制和十六進(jìn)制的進(jìn)制轉(zhuǎn)換,需要的朋友可以參考下2023-11-11Numpy之random.randint產(chǎn)生隨機(jī)整數(shù)方式
這篇文章主要介紹了Numpy之random.randint產(chǎn)生隨機(jī)整數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12Python中的shape[0]、shape[1]和shape[-1]使用方法
shape函數(shù)是Numpy中的函數(shù),它的功能是讀取矩陣的長(zhǎng)度,比如shape[0]就是讀取矩陣第一維度的長(zhǎng)度,這篇文章主要介紹了Python中的shape[0]、shape[1]和shape[-1]使用方法,需要的朋友可以參考下2023-07-07解決PyCharm無(wú)法使用lxml庫(kù)的問(wèn)題(圖解)
這篇文章主要介紹了解決PyCharm無(wú)法使用lxml庫(kù)的問(wèn)題,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12Python pymysql模塊安裝并操作過(guò)程解析
這篇文章主要介紹了Python pymysql模塊安裝并操作過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10