day24 01 初識繼承 面向對象的三大特性:繼承,多態,封裝 一、繼承的概念 繼承:是一種創建新類的方式,新建的類可以繼承一個或者多個父類,父類又可稱基類或超類,新建的類稱為派生類或者子類 一個類可以被多個類繼承,先有父類才有子類 一個類可以繼承多個父類 只在python裡面才可以,其他語言不可 ...
day24 01 初識繼承
面向對象的三大特性:繼承,多態,封裝
一、繼承的概念
繼承:是一種創建新類的方式,新建的類可以繼承一個或者多個父類,父類又可稱基類或超類,新建的類稱為派生類或者子類
class A: # 父類,基類,超類 pass class B: # 父類,基類,超類 pass class A_son(A,B): # 子類,派生類 pass class AB_son(A,B): # 子類,派生類 pass
- 一個類可以被多個類繼承,先有父類才有子類
- 一個類可以繼承多個父類----只在python裡面才可以,其他語言不可以
註意:從父類不能知道自己將會被哪個類繼承,但是從子類肯定可以知道自己的父類,這是從子類像父類指向單方向線程
二、父類的查看方法
類似於對像可以使用_dict_方法查看屬性,子類也可以使用_bases_方法查看它的父類
class A: # 父類,基類,超類 pass class B: # 父類,基類,超類 pass class A_son(A): # 子類,派生類 pass class B_son(A,B): # 子類,派生類 pass class AB_son(A,B): # 子類,派生類 pass print(A_son.__bases__) print(B_son.__bases__) print(AB_son.__bases__) print(A.__bases__) print(B.__bases__)
運行結果:
C:\Users\sku1-1\PycharmProjects\untitled\venv\Scripts\python.exe "C:/Users/sku1-1/PycharmProjects/untitled/day24 01 初識繼承.py" (<class '__main__.A'>,) (<class '__main__.A'>, <class '__main__.B'>) (<class '__main__.A'>, <class '__main__.B'>) (<class 'object'>,) (<class 'object'>,) Process finished with exit code 0
從上面的運行結果可以看到,特別的父類A和B的父類都是‘object’,如果沒有繼承父類,就預設繼承‘object’,這也是python3的新式類
三、繼承表達的關係:什麼是什麼的關係
只有是兩個類之間才會產生繼承的關係,兩個類之間存在一些共同的抽象的東西,將這些共同的東西抽象出來就可以成為這兩個類的父類
以之前的人狗大戰的游戲為例,裡面的人物角色與狗的角色,定義它們的類的時候,裡面有一些屬性是相同的,比如:name,blood,aggr,而且狗和人都是動物,這樣就可以抽象出它們的父類---animal,參考以下代碼:
class animal: # 父類 def __init__(self,name,blood,aggr): self.name=name self.blood=blood self.aggr=aggr class dog(animal): # 子類 def bite(self,someone): someone.blood-=self.aggr class someone(animal): # 子類 def attack(self,dog): dog.blood -=self.aggr dog1 = dog('溜溜球',200,500) print(dog1.name) person1 = someone('王昭君',300,500) print(person1.name)
運行結果:
溜溜球
王昭君