物件導向程式設計 多重繼承(七)

2022-03-14 07:11:28 字數 3676 閱讀 6025

1.繼承

繼承:至少兩個類,表達的是什麼是什麼的關係。繼承存在單繼承和多繼承。

子類要是沒有__init__,就呼叫父類的,子類要是有__init__,就呼叫自己的,也可以引用父類的。

class

animal(object):

def__init__

(self,name,aggressivity,life_value):

self.name = name #

每乙隻狗都有自己的暱稱;

self.aggressivity = aggressivity #

每乙隻狗都有自己的攻擊力;

self.life_value = life_value #

每乙個角色都有自己的生命值;

defeat(self):

self.life_value += 100

class dog(animal): #

定義乙個狗類

def__init__

(self, name, breed, aggressivity, life_value):

#animal.__init__(self,name,aggressivity,life_value)

super().__init__

(name,aggressivity,life_value)

self.breed =breed

defbite(self,people):

people.life_value -=self.aggressivity

class person(animal): #

定義乙個人類

def__init__

(self, name, aggressivity, life_value, money):

#animal.__init__(name,aggressivity,life_value)

super().__init__

(name,aggressivity,life_value)

self.money =money

defeat(self):

print("

woshi666")

taibai = person('

taiba

',50,250,200) #

建立乙個物件

print(taibai.life_value) #

可以呼叫類的屬性初始化

taibai.eat() #

呼叫子類的函式

animal.eat(taibai) #

就是要調取父類

super(person,taibai).eat() #

就是要調取父類

print(taibai.life_value)

子類之中有,但又想呼叫父類之中的,有兩種方法:

(1)類名.方法(例項)

(2)super(類,物件).方法

2.鑽石繼承

在python中,允許子類繼承多個基類,這種特性就是通常所說的多重繼承。

在python3之前版本中存在經典類,所謂的經典類沒有指定基類的類,不過在python3中,已經不存在經典類,沒有指定基類的以object作為基類。

在經典類中,繼承的法則是深度優先。

a(b,c): #在b裡,會選擇d而不會選b,這就是深度優先

...

pass

...>>> a =a()

>>>a.eat()

d在新式類中,繼承的法則是廣度優先。

>>>a.eat() #c和d之間選c,

c一般情況類的繼承不會超過4層,下面列出幾種稍微複雜的情況。

a")在python3中可以查詢繼承的順序。

print

(a.mro())

['__main__.a

'>,

'__main__.b

'>,

'__main__.d

'>,

'__main__.c

'>,

'__main__.e

'>,

'__main__.f

'>,

'object

'>]

在python2.2之前,python中使用經典類,經典類是一種沒有繼承的類,所有型別都是type型別,如果經典類作為父類,子類呼叫父類建構函式會報錯。

在python2.2開始,為了使類的內建型別更加統一,引入了新式類,新式類每個類都繼承自乙個基類,預設自object,子類可以呼叫基類的建構函式,由於所有類都有乙個公共的祖先類,所以新式類不能使用深度優先(dfs)。

物件導向程式設計 繼承

繼承是物件導向程式設計的主要特點之一。繼承,顧名思義就是子繼承父的所有。在面向程式設計中繼承的意思並沒變,子類繼承父類所擁有的屬性 方法。使用extends關鍵字使子類繼承父類,子類就可以自動復用父類的方法了 私有方法除外 並且繼承了父類的所有屬性。在子類例項化過程中子類的構造方法一定會去呼叫父類的...

物件導向程式設計 繼承

一 簡介 1 繼承是軟體復用的一種方式,通過繼承,可以吸收現有類的資料和行為來建立新類,並增添新的效能增類。2 派生類顯示繼承的基類稱為直接基類,經兩級或者多級類層次繼承的類稱為間接基類。3 繼承的方式 public private protected 4 派生類一般不能直接訪問基類的private...

python物件導向程式設計 繼承

物件導向三大特性 封裝根據職責將屬性和方法封裝到乙個抽象的類中 繼承實現 的重用,相同的 不需要重複的編寫 多型不同的物件呼叫相同的方法,產生不同的執行結果,增加 的靈活度 1 繼承的語法class 類名 父類名 pass2 專業術語 3 繼承的傳遞性 子類擁有父類以及父類的父類中封裝的所有屬性和方...