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中可以查詢繼承的順序。
(a.mro())
['__main__.a
'>,
'__main__.b
'>,
'__main__.d
'>,
'__main__.c
'>,
'__main__.e
'>,
'__main__.f
'>,
'object
'>]
在python2.2開始,為了使類的內建型別更加統一,引入了新式類,新式類每個類都繼承自乙個基類,預設自object,子類可以呼叫基類的建構函式,由於所有類都有乙個公共的祖先類,所以新式類不能使用深度優先(dfs)。
物件導向程式設計 繼承
繼承是物件導向程式設計的主要特點之一。繼承,顧名思義就是子繼承父的所有。在面向程式設計中繼承的意思並沒變,子類繼承父類所擁有的屬性 方法。使用extends關鍵字使子類繼承父類,子類就可以自動復用父類的方法了 私有方法除外 並且繼承了父類的所有屬性。在子類例項化過程中子類的構造方法一定會去呼叫父類的...
物件導向程式設計 繼承
一 簡介 1 繼承是軟體復用的一種方式,通過繼承,可以吸收現有類的資料和行為來建立新類,並增添新的效能增類。2 派生類顯示繼承的基類稱為直接基類,經兩級或者多級類層次繼承的類稱為間接基類。3 繼承的方式 public private protected 4 派生類一般不能直接訪問基類的private...
python物件導向程式設計 繼承
物件導向三大特性 封裝根據職責將屬性和方法封裝到乙個抽象的類中 繼承實現 的重用,相同的 不需要重複的編寫 多型不同的物件呼叫相同的方法,產生不同的執行結果,增加 的靈活度 1 繼承的語法class 類名 父類名 pass2 專業術語 3 繼承的傳遞性 子類擁有父類以及父類的父類中封裝的所有屬性和方...