python 子類繼承父類的__init__方法
阿新 • • 發佈:2019-01-09
父類:
1 class A(object): 2 def __init__(self, name): 3 self.name = name 4 print("父類name:", self.name) 5 6 def getName(self): 7 return '子類例項A :' + self.name
子類繼承:子類不重寫__init__,例項化子類時,會自動呼叫父類定義的__init__
1 class B(A): 2 def getName(self): 3 return 'B '+self.name 4 5 if __name__=='__main__': 6 b=B('hello') 7 print(b.getName())
執行結果:
父類name: hello
子類例項B :hello
但重寫了__init__時,例項化子類,就不會呼叫父類已經定義的__init__
1 class A(object): 2 def __init__(self, name): 3 self.name = name 4 print("父類name:", self.name)5 6 def getName(self): 7 return '子類例項A :' + self.name 8 9 10 class B(A): 11 def __init__(self, name): 12 print("子類的init例項") 13 self.name = name 14 15 def getName(self): 16 return '子類例項B :' + self.name 17 18 if __name__ == '__main__': 19 b = B('hello') 20 print(b.getName())
執行結果:
子類的init例項
子類例項B :hello
為了能使用或擴充套件父類的行為,最好顯示呼叫父類的__init__方法
1 class A(object): 2 def __init__(self, name): 3 self.name = name 4 print("父類name:", self.name) 5 6 def getName(self): 7 return '子類例項A :' + self.name 8 9 10 class B(A): 11 def __init__(self, name): 12 super(B, self).__init__(name) 13 print("子類的init例項") 14 self.name = name 15 16 def getName(self): 17 return '子類例項B :' + self.name 18 19 if __name__ == '__main__': 20 b = B('hello') 21 print(b.getName())
執行結果
父類name: hello
子類的init例項
子類例項B :hello