面向物件--子類重寫父類的同名屬性和方法
阿新 • • 發佈:2020-09-14
子類重寫父類的同名屬性和方法
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__)
劇情發展:
大貓的新配方大受歡迎,但是有些顧客希望也能吃到古法配方和 現代配方 的煎餅果子...(子類呼叫父類的同名屬性和方法)