子類重寫父類的同名屬性和方法
class Master(object): def __init__(self): self.kongfu = "古法煎餅果子配方" def make_cake(self): print("[古法] 按照 <%s> 制作了一份煎餅果子..." % self.kongfu) class School(object): def __init__(self): self.kongfu = "現代煎餅果子配方" def make_cake(self): print("[現代] 按照 <%s> 制作了一份煎餅果子..." % self.kongfu) class Prentice(School, Master): # 多繼承,繼承了多個父類 def __init__(self): self.kongfu = "貓氏煎餅果子配方" def make_cake(self): print("[貓氏] 按照 <%s> 制作了一份煎餅果子..." % self.kongfu) # 如果子類和父類的方法名和屬性名相同,則默認使用子類的 # 叫 子類重寫父類的同名方法和屬性 damao = Prentice() print(damao.kongfu) # 子類和父類有同名屬性,則默認使用子類的 damao.make_cake() # 子類和父類有同名方法,則默認使用子類的 # 子類的魔法屬性__mro__決定了屬性和方法的查找順序 print(Prentice.__mro__)
劇情發展:
大貓的新配方大受歡迎,但是有些顧客希望也能吃到古法配方和 現代配方 的煎餅果子...(子類調用父類的同名屬性和方法)