繼承
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__
父類沒有的方法,子類有的:派生屬性
父類沒有的方法,子類有的:派生方法
classsuper() 呼叫父類 dog類可變為下面: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)
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語句,這樣就 強制當前正在執行的執行緒休眠 暫停執行 以 減慢執行緒 ...