python学习day24 继承 派生
生活随笔
收集整理的這篇文章主要介紹了
python学习day24 继承 派生
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?繼承
class A(object):pass # 父類,基類,超類 object是類祖宗,一般默認不寫 class B:pass # 父類,基類,超類 class A_son(A,B):pass # 子類,派生類 class AB_son(A):pass # 子類,派生類 # 一個類 可以被多個類繼承 # 一個類 可以繼承多個父類 —— python里 print(AB_son.__bases__) # 查看父類 print(A.__bases__) # (<class 'object'>) 類祖宗
?
?有的類中屬性、方法會重用,就可以用繼承
?
?
?如果沒有__init__,就執行父類__init__
父類沒有的方法,子類有的:派生屬性
父類沒有的方法,子類有的:派生方法
?
class Animal:def __init__(self,name,aggr,hp):self.name = nameself.aggr = aggrself.hp = hpdef eat(self):print('吃藥回血')self.hp+=100 # class Dog(Animal):def __init__(self,name,aggr,hp,kind):Animal.__init__(self,name,aggr,hp) # self.kind = kind # 派生屬性def eat(self):Animal.eat(self) # 如果既想實現新的功能也想使用父類原本的功能,還需要在子類中再調用父類self.teeth = 2def bite(self,person): # 派生方法person.hp -= self.aggrjin = Dog('金老板',100,500,'吉娃娃') jin.eat() # 調用子類,如果子類中沒有,調用父類的方法 print(jin.hp)
super() 調用父類? Dog類可變為下面:
class Dog(Animal):def __init__(self,name,aggr,hp,kind):super().__init__(name,aggr,hp) # 只在新式類中有,python3中所有類都是新式類self.kind = kind # 派生屬性def eat(self):print('dog eating')jin = Dog('金老板',200,500,'teddy')super(Dog,jin).eat() # 'dog eating'
?
多繼承
鉆石繼承
class A:passdef func(self): print('A') class B(A):pass# def func(self): print('B') class C(A):passdef func(self): print('C')class D(B,C):pass# def func(self):print('D') d = D() d.func() # C 先找B,B找不到再找它的兄弟C 而不是A
新式類中的繼承順序 : 廣度優先
新式類就是繼承obkect? ?py3中所有類都是新式類
小烏龜問題
查看繼承順序:
print(D.mro()) # 從子類按照廣度優先一直追溯到object類
?
經典類:
?深度優先,一條路走到黑
?
?總結:
# 新式類 繼承object類的才是新式類 廣度優先 # 經典類 如果你直接創建一個類 在2.7中就是經典類 深度優先 # print(D.mro()) # D.mro()# 單繼承 : 子類有的用子類 子類沒有用父類 # 多繼承中,我們子類的對象調用一個方法,默認是就近原則,找的順序是什么? # 經典類中 深度優先 # 新式類中 廣度優先 # python2.7 新式類和經典類共存,新式類要繼承object # python3 只有新式類,默認繼承object # 經典類和新式類還有一個區別 mro方法只在新式類中存在 # super 只在python3中存在 # super的本質 :不是單純找父類 而是根據調用者的節點位置的廣度優先順序來的
?
?注意第6步 跳到class C
super的本質 :不是單純找父類 而是根據調用者的節點位置的廣度優先順序來的
?
?
?
?
?
2018.11.17
轉載于:https://www.cnblogs.com/happyfan/p/9971385.html
總結
以上是生活随笔為你收集整理的python学习day24 继承 派生的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: thymeleaf+layui 展示
- 下一篇: 十大元帅是谁画的啊?