父類中的方法被覆蓋以及子類調用父類覆蓋的方法
阿新 • • 發佈:2018-08-25
實現 python 函數 調用 self. exe over obj 同名
覆蓋 override
覆蓋是指在有繼承關系的類中,子類中實現了與基類同名的方法,在子類的實例調用該方法時,實際調用的是
子類中的覆蓋版本,這種現象叫做覆蓋
調用super 函數的兩個方法:
1.super(cls, obj) 返回綁定超類的實例(要求obj必須是cls類型的實例)
2.super() 返回綁定超類的實例,等同於: super(__class__, 實例方法的第一個參數), 必須在方法內調用
作用:
可以用super() 返回的實例間接調用其父類的覆蓋方法
class A:
def work(self):
print("A.work")
classB(A): def work(self): print("B.work") def super_work(self): self.work() #調用父類的work方法 super(B, b).work() super().work() #這種調用父類的方法只能在方法中調用 super(self.__class__, self).work() b = B() b.work() print("------") A.work(b) #對象b調用A類裏面的work方法 print("++++++") super(B, b).work() print("******") b.super_work() 輸出結果; tarena@tedu:~/zengsf/824$ python3 exercise824_2.py B.work ------ A.work ++++++ A.work ****** B.work A.work A.work A.work
父類中的方法被覆蓋以及子類調用父類覆蓋的方法