day24 01 初識繼承python
面向對象的三大特性:繼承,多態,封裝spa
1、繼承的概念線程
繼承:是一種建立新類的方式,新建的類能夠繼承一個或者多個父類,父類又可稱基類或超類,新建的類稱爲派生類或者子類code
class A: # 父類,基類,超類 pass class B: # 父類,基類,超類 pass class A_son(A,B): # 子類,派生類 pass class AB_son(A,B): # 子類,派生類 pass
注意:從父類不能知道本身將會被哪一個類繼承,可是從子類確定能夠知道本身的父類,這是從子類像父類指向單方向線程對象
2、父類的查看方法blog
相似於對像能夠使用_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的新式類ip
3、繼承表達的關係:什麼是什麼的關係it
只有是兩個類之間纔會產生繼承的關係,兩個類之間存在一些共同的抽象的東西,將這些共同的東西抽象出來就能夠成爲這兩個類的父類
以以前的人狗大戰的遊戲爲例,裏面的人物角色與狗的角色,定義它們的類的時候,裏面有一些屬性是相同的,好比: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)
運行結果:
溜溜球
王昭君