在 Python 中,繼承是一種重要的面向?qū)ο?a target="_blank">編程概念。通過(guò)繼承,我們可以定義一個(gè)新的類(lèi),它繼承了現(xiàn)有類(lèi)的屬性和方法。這種代碼重用可以使我們更高效地編寫(xiě)程序,并提高代碼的可讀性和可維護(hù)性。

基本語(yǔ)法
在 Python 中,繼承是通過(guò)將父類(lèi)的名稱(chēng)作為子類(lèi)的參數(shù)來(lái)實(shí)現(xiàn)的。例如,下面的代碼定義了一個(gè)名為 Rectangle 的子類(lèi),它繼承了 Shape 類(lèi)的屬性和方法。
classShape: def\__init\__(self,x,y): self.x=x self.y=y defarea(self): pass classRectangle(Shape): def\__init\__(self,x,y,width,height): super().\__init\__(x,y) self.width=width self.height=height defarea(self): returnself.width*self.height
在上面的代碼中,我們定義了一個(gè)名為 Shape 的父類(lèi),它包含了一個(gè) x 和一個(gè) y 屬性,以及一個(gè)名為 area() 的方法。然后,我們定義了一個(gè)名為 Rectangle 的子類(lèi),它繼承了 Shape 類(lèi),并添加了一個(gè) width 和一個(gè) height 屬性,以及一個(gè)重寫(xiě)的 area() 方法。
請(qǐng)注意,我們?cè)谧宇?lèi)的 _init_() 方法中使用了 super()._init_(),它調(diào)用了父類(lèi)的構(gòu)造函數(shù),并將 x 和 y 參數(shù)傳遞給它。這確保了子類(lèi)在實(shí)例化時(shí)也會(huì)初始化父類(lèi)的屬性。
方法重寫(xiě)
在 Python 中,子類(lèi)可以重寫(xiě)父類(lèi)的方法。這使得子類(lèi)能夠自定義其行為,并覆蓋繼承自父類(lèi)的默認(rèn)實(shí)現(xiàn)。
classSquare(Rectangle): def\__init\__(self,x,y,size): super().\__init\__(x,y,size,size)
在上面的代碼中,我們定義了一個(gè)名為 Square 的子類(lèi),它繼承了 Rectangle 類(lèi),并重寫(xiě)了其 _init_() 方法,將 width 和 height 參數(shù)都設(shè)置為 size。這使得 Square 類(lèi)可以像正方形一樣使用,而不是矩形。
多重繼承
Python 還支持多重繼承,這意味著一個(gè)類(lèi)可以繼承多個(gè)父類(lèi)的屬性和方法。這使得我們可以組合不同類(lèi)的功能,并將其合并到一個(gè)新的類(lèi)中。
classEmployee: def\__init\__(self,name,salary): self.name=name self.salary=salary defcalculate_pay(self): pass classSalesPerson(Employee): defcalculate_pay(self): returnself.salary+self.commission classManager(Employee): defcalculate_pay(self): returnself.salary+self.bonus classSalesManager(SalesPerson,Manager): defcalculate_pay(self): returnsuper().calculate_pay()+self
在上面的代碼中,我們定義了一個(gè)名為 Employee 的父類(lèi),它包含了一個(gè)名為 name 和一個(gè)名為 salary 的屬性,以及一個(gè)名為 calculate_pay() 的方法。然后,我們定義了兩個(gè)子類(lèi),SalesPerson 和 Manager,它們分別重寫(xiě)了父類(lèi)的 calculate_pay() 方法。
最后,我們定義了一個(gè)名為 SalesManager 的子類(lèi),它同時(shí)繼承了 SalesPerson 和 Manager 類(lèi)。在這種情況下,當(dāng)我們調(diào)用 calculate_pay() 方法時(shí),Python 將從左到右依次搜索父類(lèi),直到找到一個(gè)具有相應(yīng)方法的類(lèi)。在這個(gè)例子中,Python 將先搜索 SalesPerson 類(lèi),然后是 Manager 類(lèi)。
請(qǐng)注意,我們使用 super() 函數(shù)來(lái)調(diào)用父類(lèi)的方法。這確保了所有父類(lèi)的 calculate_pay() 方法都會(huì)被調(diào)用,而不是只調(diào)用其中一個(gè)。
總結(jié)
繼承是面向?qū)ο缶幊痰闹匾拍钪?,可以幫助我們編?xiě)更高效和可維護(hù)的代碼。在 Python 中,我們可以通過(guò)將父類(lèi)的名稱(chēng)作為子類(lèi)的參數(shù)來(lái)實(shí)現(xiàn)繼承,并使用方法重寫(xiě)和多重繼承來(lái)定制子類(lèi)的行為。
審核編輯:湯梓紅
-
編程
+關(guān)注
關(guān)注
90文章
3716瀏覽量
97191 -
程序
+關(guān)注
關(guān)注
117文章
3846瀏覽量
85246 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4417瀏覽量
67521 -
代碼
+關(guān)注
關(guān)注
30文章
4968瀏覽量
73988 -
python
+關(guān)注
關(guān)注
57文章
4876瀏覽量
90046
原文標(biāo)題:網(wǎng)絡(luò)工程師學(xué)Python-13-繼承
文章出處:【微信號(hào):網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號(hào):網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Python的面向?qū)ο缶幊?b class='flag-5'>詳解
Python多重繼承使用方法
3分鐘看懂Python面向?qū)ο?/a>
python類(lèi)的繼承
完全自學(xué)指南Python爬蟲(chóng)BeautifulSoup詳解
《Python開(kāi)發(fā)技術(shù)詳解》-隨書(shū)附帶程序
python類(lèi)的繼承詳解
Python到底是如何實(shí)現(xiàn)繼承的呢
Python中的繼承詳解
評(píng)論