python學習day24 繼承 派生

2022-06-19 21:03:16 字數 3172 閱讀 1726

繼承

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__) #

() 類祖宗

有的類中屬性、方法會重用,就可以用繼承

如果沒有__init__,就執行父類__init__

父類沒有的方法,子類有的:派生屬性

父類沒有的方法,子類有的:派生方法

class

animal:

def__init__

(self,name,aggr,hp):

self.name =name

self.aggr =aggr

self.hp =hp

defeat(self):

print('

吃藥回血')

self.hp+=100

#class

dog(animal):

def__init__

(self,name,aggr,hp,kind):

animal.

__init__(self,name,aggr,hp) #

self.kind = kind #

派生屬性

defeat(self):

animal.eat(self)

#如果既想實現新的功能也想使用父類原本的功能,還需要在子類中再呼叫父類

self.teeth = 2

def bite(self,person): #

派生方法

person.hp -=self.aggr

jin = 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'

多繼承鑽石繼承

#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

day24 學習總結

構造方法 date d new date string類和date類的轉換,通過dateformat類來實現轉換 dateformat為抽象類,需要通過其具體的子類來建立物件 dateformat類 構造方法 public dateformat 無參構造 public dateformat stri...

day24 繼承 封裝和多型

一 繼承 如果乙個類別繼承自另乙個類,那麼就形成了子類與父類。繼承使得子類具有父類的各種屬性和方法,而不需要再次編寫相同的 在子類繼承父類的同時,可以重新定義某些屬性和方法。作用 1 增加了類的耦合性 相關性 2 減少了重複 3 使得 更加規範化,合理化 分類 單繼承 繼承乙個類 多繼承 子類繼承自...

執行緒狀態 Day24

執行緒狀態概述 timed waiting在api中的描述為 乙個正在限時等待另乙個執行緒執行乙個 喚醒 動作的執行緒處於這一狀態 在我們寫賣票的案例中,為了減少執行緒執行太快,現象不明顯等問題,我們在run方法中新增了sleep語句,這樣就 強制當前正在執行的執行緒休眠 暫停執行 以 減慢執行緒 ...