覆寫(Overwrite)
class Cat:
def __init__(self, name):
self.name = name
def jump(self):
print(self.name+" 跳了一下")
def __hair_less(self):
print(self.name+" 禿頭")
class Mix(Cat):
def __init__(self, name):
super(Mix, self).__init__(name)
def jump(self):
super().jump()
print("[Mix] "+self.name+" 跳了一下")
animal = Mix("噹噹")
animal.jump()
#print 噹噹 跳了一下
#print [Mix] 噹噹 跳了一下
在Cat這個類別中,我們有jump method
但他的繼承者也可以覆寫這個method,並且在執行父類別的jump基礎上再執行屬於自己的程式
只要透過super().method_name()
就可以執行父類別的函式
在Python中覆寫Method不強制一定要執行 父類別的函式
所以我們也可以這麼寫...
class Cat:
def __init__(self, name):
self.name = name
def jump(self):
print(self.name+" 跳了一下")
def __hair_less(self):
print(self.name+" 禿頭")
class Mix(Cat):
def __init__(self, name):
super(Mix, self).__init__(name)
def jump(self):
print("[Mix] "+self.name+" 跳了一下")
animal = Mix("噹噹")
animal.jump() #print [Mix] 噹噹 跳了一下
而這時候,就不會去呼叫父類別的函式,但也要思考一下,如果你不需要執行父類別的東西
那你繼承他是為了什麼? 這塊在物件導向設計的時候需要好好地釐清關係,以免寫出一些莫名其妙的程式