新聞中心
繼承機(jī)制經(jīng)常用于創(chuàng)建和現(xiàn)有類功能類似的新類,又或是新類只需要在現(xiàn)有類基礎(chǔ)上添加一些成員(屬性和方法),但又不想直接將現(xiàn)有

10年積累的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有梅列免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
類代碼復(fù)制給新類。也就是說,通過使用繼承這種機(jī)制,可以輕松實(shí)現(xiàn)類的重復(fù)使用。
舉個(gè)例子,假設(shè)現(xiàn)有一個(gè) Shape 類,該類的 draw() 方法可以在屏幕上畫出指定的形狀,現(xiàn)在需要?jiǎng)?chuàng)建一個(gè) Form 類,要求此類不但可以
在屏幕上畫出指定的形狀,還可以計(jì)算出所畫形狀的面積。要?jiǎng)?chuàng)建這樣的類,笨方法是將 draw() 方法直接復(fù)制到新類中,并添加計(jì)算面
積的方法。實(shí)現(xiàn)代碼如下所示:
class Shape:
def draw(self,content):
print("畫",content)
class Form:
def draw(self,content):
print("畫",content)
def area(self):
#....
print("此圖形的面積為...")當(dāng)然還有更簡(jiǎn)單的方法,就是使用類的繼承機(jī)制。實(shí)現(xiàn)方法為:讓 From 類繼承 Shape 類,這樣當(dāng) From 類對(duì)象調(diào)用 draw() 方法時(shí),
Python 解釋器會(huì)先去 From 中找以 draw 為名的方法,如果找不到,它還會(huì)自動(dòng)去 Shape 類中找。如此,我們只需在 From 類中添加
計(jì)算面積的方法即可,示例代碼如下:
class Shape:
def draw(self,content):
print("畫",content)
class Form(Shape):
def area(self):
#....
print("此圖形的面積為...")上面代碼中,class From(Shape) 就表示 From 繼承 Shape。
Python 中,實(shí)現(xiàn)繼承的類稱為子類,被繼承的類稱為父類(也可稱為基類、超類)。因此在上面這個(gè)樣例中,F(xiàn)rom 是子類,Shape 是父類。
子類繼承父類時(shí),只需在定義子類時(shí),將父類(可以是多個(gè))放在子類之后的圓括號(hào)里即可。語(yǔ)法格式如下:
class 類名(父類1, 父類2, ...): #類定義部分
注意,有讀者可能還聽說過“派生”這個(gè)詞匯,它和繼承是一個(gè)意思,只是觀察角度不同而已。換句話話,繼承是相對(duì)子類來說的,即子
類繼承自父類;而派生是相對(duì)于父類來說的,即父類派生出子類。
了解了繼承機(jī)制的含義和語(yǔ)法之后,下面代碼演示了繼承機(jī)制的用法:
class People:
def say(self):
print("我是一個(gè)人,名字是:",self.name)
class Animal:
def display(self):
print("人也是高級(jí)動(dòng)物")
#同時(shí)繼承 People 和 Animal 類
#其同時(shí)擁有 name 屬性、say() 和 display() 方法
class Person(People, Animal):
pass
zhangsan = Person()
zhangsan.name = "張三"
zhangsan.say()
zhangsan.display()關(guān)于Python的多繼承
事實(shí)上,大部分面向?qū)ο蟮木幊陶Z(yǔ)言,都只支持單繼承,即子類有且只能有一個(gè)父類。而 Python 卻支持多繼承(C++也支持多繼承)。
和單繼承相比,多繼承容易讓代碼邏輯復(fù)雜、思路混亂,一直備受爭(zhēng)議,中小型項(xiàng)目中較少使用,后來的 Java、C#、PHP 等干脆取消了多繼承。
使用多繼承經(jīng)常需要面臨的問題是,多個(gè)父類中包含同名的類方法。對(duì)于這種情況,Python 的處置措施是:根據(jù)子類繼承多個(gè)父類時(shí)這些父類的前后次序決定,即排在前面父類中的類方法會(huì)覆蓋排在后面父類中的同名類方法。
舉個(gè)例子:
class People:
def __init__(self):
self.name = People
def say(self):
print("People類",self.name)
class Animal:
def __init__(self):
self.name = Animal
def say(self):
print("Animal類",self.name)
#People中的 name 屬性和 say() 會(huì)遮蔽 Animal 類中的
class Person(People, Animal):
pass
zhangsan = Person()
zhangsan.name = "張三"
zhangsan.say() 網(wǎng)站題目:創(chuàng)新互聯(lián)Python教程:你了解python中的繼承嗎
分享路徑:http://www.5511xx.com/article/dhcdidg.html


咨詢
建站咨詢
