python 單繼承中的super函數
super() 函數是用於調用父類(超類)的一個方法。
super是用來解決多重繼承問題的,直接用類名調用父類方法在使用單繼承的時候沒問題,但是如果使用多繼承,會涉及到查找順序(MRO)、重複調用(鑽石繼承)等種種問題。
下面舉個實例來解釋Python單繼承中的super():
1 class Parent:
2 def __init__(self,name):
3 print("Parent的init函數被調用")
4 self.name =name
5 print("Partent的init結束調用")
6
7 class Son1(Parent):
8 def __init__(self,name,color):
9 print("Son1的init函數被調用")
10 self.color = color
11 super().__init__(name)
12
13 class Grandson(Son1):
14 def __init__(self,name,color,age):
15 print("Grandson的init函數被調用")
16 self.age = age
17 super().__init__(name,color)
18
19 grandson1 = Grandson('grandson','黃種人',12)
20 print(grandson1.name)
21 print(grandson1.color)
22 print(grandson1.age)
23 print("----程序結束--")
~
~
程序輸出結果:
Grandson的init函數被調用
Son1的init函數被調用
Parent的init函數被調用
Partent的init結束調用
grandson
黃種人
12
----程序結束–