繼承簡介 | Python從入門到精通:高階篇之二十九
方法的重寫
定義一個類 Animal(動物)
這個類中需要兩個方法:run() sleep()
定義一個Dog類,繼承Animal
class Animal:
def run(self):
print('動物會跑~~~')
def sleep(self):
print('動物睡覺~~~')
class Dog(Animal):
def bark(self):
print('汪汪汪~~~')
def run(self):
print('狗跑~~~~')
創建一個Dog類的實例
d = Dog()
d.run()
執行結果:
通過結果,可以發現調用的是Dog中的方法。
如果在子類中如果有和父類同名的方法,則通過子類實例去調用方法時,會調用子類的方法而不是父類的方法,這個特點我們成為叫做方法的重寫(覆蓋,override)。
可以確保在繼承父類方法之後,自身還可以做出簡單的修改。
創建一個類:
class A(object):
def test(self):
print('AAA')
class B(A):
pass
class C(B):
pass
# 創建一個c的實例
c = C()
c.test()
執行結果:
我們對以上代碼做出一點改變:
class A(object):
def test(self):
print('AAA')
class B(A):
pass
class C(B):
def test(self):
print('CCC')
# 創建一個c的實例
c = C()
c.test()
執行結果:
class A(object):
def test(self):
print('AAA')
class B(A):
def test(self):
print('BBB')
class C(B):
def test(self):
print('CCC')
# 創建一個c的實例
c = C()
c.test()
執行結果:
當我們調用一個對象的方法時,會優先去當前對象中尋找是否具有該方法,如果有則直接調用。如果沒有,則去當前對象的父類中尋找,如果父類中有則直接調用父類中的方法,如果沒有,則去父類的父類中尋找,以此類推,直到找到object,如果依然沒有找到,則報錯。
我們來做個修改:
c.hello()
執行結果:
配套視頻課程,點擊這裡查看
獲取更多資源請訂閱Python學習站