day24 01 初識繼承

day24 01 初識繼承python

 

面向對象的三大特性:繼承,多態,封裝spa

 

1、繼承的概念線程

繼承:是一種建立新類的方式,新建的類能夠繼承一個或者多個父類,父類又可稱基類或超類,新建的類稱爲派生類或者子類code

class A:  # 父類,基類,超類
    pass
class B:  # 父類,基類,超類
    pass
class A_son(A,B):  # 子類,派生類
    pass
class AB_son(A,B):  # 子類,派生類
    pass
  • 一個類能夠被多個類繼承,先有父類纔有子類
  • 一個類能夠繼承多個父類----只在python裏面才能夠,其餘語言不能夠

注意:從父類不能知道本身將會被哪一個類繼承,可是從子類確定能夠知道本身的父類,這是從子類像父類指向單方向線程對象

 

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)

運行結果:

溜溜球
王昭君
相關文章
相關標籤/搜索