一文輕松了解Python中類(lèi)的繼承
1. 單繼承
繼承的主要作用是實(shí)現(xiàn)代碼的重用。繼承使得子類(lèi)擁有父類(lèi)的方法和屬性。
直接來(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()
從上面的代碼可以看出,在編寫(xiě)dog類(lèi)的時(shí)候,我們并沒(méi)有重寫(xiě)eat和drink兩個(gè)方法。我們只需要在dog后面的括號(hào)中加上父類(lèi)的名字即可。當(dāng)子類(lèi)繼承了父類(lèi),子類(lèi)就可以直接使用父類(lèi)中的方法了。在本例中,goudan可以直接使用animal類(lèi)中的eat和drink兩個(gè)方法。
而且一個(gè)神奇的事情是,繼承是具有傳遞性的。子類(lèi)擁有父類(lèi)的方法和屬性,同時(shí)也具有父類(lèi)的父類(lèi)所具有的屬性。
2. 繼承中的方法重寫(xiě)
有時(shí)候,父類(lèi)中的方法并不能完成滿足子類(lèi)的需求。這時(shí)候我們就需要方法重寫(xiě)了。子類(lèi)方法重寫(xiě)一般有兩種情況:
- 覆蓋父類(lèi)的方法
- 對(duì)父類(lèi)的方法進(jìn)行擴(kuò)展
一種簡(jiǎn)單的方法是直接重寫(xiě)相應(yīng)的方法。下面這個(gè)例子就是重寫(xiě)了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)單的覆蓋父類(lèi)中的方法,而是在父類(lèi)方法的基礎(chǔ)上對(duì)方法進(jìn)行擴(kuò)展。具體的做法是:
- 在需要的位置使用super().父類(lèi)方法 來(lái)調(diào)用父類(lèi)方法的執(zhí)行
- 代碼的其他位置針對(duì)子類(lèi)的需求,編寫(xiě)子類(lèi)持有的代碼實(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ù)子類(lèi)的需求編寫(xiě)特定的代碼
print("拿舌頭喝水")
# 2. 使用super繼承父類(lèi)中的fangfa
super().drink
def dark(self):
print("汪汪叫")
goudan = dog()
goudan.eat()
goudan.drink()
3. 多繼承
對(duì)于Python而言,一個(gè)子類(lèi)可以有多個(gè)父類(lèi)。多繼承的基本語(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中類(lèi)的繼承的文章就介紹到這了,更多相關(guān)Python類(lèi)的繼承內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
上手簡(jiǎn)單,功能強(qiáng)大的Python爬蟲(chóng)框架——feapder
這篇文章主要介紹了上手簡(jiǎn)單,功能強(qiáng)大的Python爬蟲(chóng)框架——feapder的使用教程,幫助大家更好的利用python進(jìn)行爬蟲(chóng),感興趣的朋友可以了解下2021-04-04
pycharm沒(méi)有找到manage?repositories按鈕的解決辦法
這篇文章主要給大家介紹了關(guān)于pycharm沒(méi)有找到manage?repositories按鈕的解決辦法,pycharm是用來(lái)寫(xiě)python的可視化代碼軟件,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
翻轉(zhuǎn)數(shù)列python實(shí)現(xiàn),求前n項(xiàng)和,并能輸出整個(gè)數(shù)列的案例
這篇文章主要介紹了翻轉(zhuǎn)數(shù)列python實(shí)現(xiàn),求前n項(xiàng)和,并能輸出整個(gè)數(shù)列的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
利用Python進(jìn)行金融數(shù)據(jù)分析的全過(guò)程
金融數(shù)據(jù)分析在現(xiàn)代金融行業(yè)中扮演著至關(guān)重要的角色,通過(guò)使用Python編程語(yǔ)言,我們可以對(duì)大量金融數(shù)據(jù)進(jìn)行處理、分析和可視化,從而獲得有價(jià)值的洞察,本篇文章將介紹如何使用Python進(jìn)行金融數(shù)據(jù)分析,需要的朋友可以參考下2024-08-08
python實(shí)現(xiàn)爬取千萬(wàn)淘寶商品的方法
這篇文章主要介紹了python實(shí)現(xiàn)爬取千萬(wàn)淘寶商品的方法,涉及Python頁(yè)面抓取的相關(guān)技巧,需要的朋友可以參考下2015-06-06
淺談Python3 numpy.ptp()最大值與最小值的差
今天小編就為大家分享一篇淺談Python3 numpy.ptp()最大值與最小值的差,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
Python+Pygame實(shí)戰(zhàn)之瘋狂吃水果游戲的實(shí)現(xiàn)
吃豆人和切水果這兩個(gè)游戲相信大家都不陌生吧,本文將利用Python中的Pygame模塊編寫(xiě)出一款結(jié)合吃豆人+切水果的新游戲:瘋狂吃水果,感興趣的可以了解一下2022-06-06
使用Python實(shí)現(xiàn)提取PDF文件中指定頁(yè)面的內(nèi)容
在日常工作和學(xué)習(xí)中,我們經(jīng)常需要從PDF文件中提取特定頁(yè)面的內(nèi)容,本文主要為大家詳細(xì)介紹了如何使用Python編程語(yǔ)言和兩個(gè)強(qiáng)大的庫(kù)——pymupdf和wxPython來(lái)實(shí)現(xiàn)這個(gè)任務(wù),需要的可以了解下2023-12-12

