日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

python学习day24 继承 派生

發布時間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 继承 派生的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。