您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Python中類的繼承怎么實(shí)現(xiàn)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Python中類的繼承怎么實(shí)現(xiàn)”吧!
繼承的主要作用是實(shí)現(xiàn)代碼的重用。繼承使得子類擁有父類的方法和屬性。
直接來看一個例子吧。
class animal: def eat(self): print("吃") def drink(self): print("喝") class dog(animal): def dark(self): print("汪汪叫") goudan = dog() goudan.eat() goudan.drink()
從上面的代碼可以看出,在編寫dog類的時候,我們并沒有重寫eat和drink兩個方法。我們只需要在dog后面的括號中加上父類的名字即可。當(dāng)子類繼承了父類,子類就可以直接使用父類中的方法了。在本例中,goudan可以直接使用animal類中的eat和drink兩個方法。
而且一個神奇的事情是,繼承是具有傳遞性的。子類擁有父類的方法和屬性,同時也具有父類的父類所具有的屬性。
有時候,父類中的方法并不能完成滿足子類的需求。這時候我們就需要方法重寫了。子類方法重寫一般有兩種情況:
覆蓋父類的方法
對父類的方法進(jìn)行擴(kuò)展
一種簡單的方法是直接重寫相應(yīng)的方法。下面這個例子就是重寫了drink這個方法。當(dāng)使用goudan調(diào)用drink這個方法方法時,結(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)我們的需求不是簡單的覆蓋父類中的方法,而是在父類方法的基礎(chǔ)上對方法進(jìn)行擴(kuò)展。具體的做法是:
在需要的位置使用super().父類方法 來調(diào)用父類方法的執(zhí)行
代碼的其他位置針對子類的需求,編寫子類持有的代碼實(shí)現(xiàn)
我們來看一個例子,此時goudan在調(diào)用drink方法的時候,會輸出喝和拿舌頭喝水兩個輸出。
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()
對于Python而言,一個子類可以有多個父類。多繼承的基本語法是比較簡單的。話不多說,直接看一個例子
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()
到此,相信大家對“Python中類的繼承怎么實(shí)現(xiàn)”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。