Python面向物件(繼承)
阿新 • • 發佈:2018-11-10
面向物件三大特性:繼承
1 class F: 2 def f1(self): 3 print("F.f1") 4 5 def f2(self): 6 print("F.f2") 7 8 class S(F):#子類繼承父類 9 def s1(self): 10 print("S.s1") 11 12 obj = S() 13 14 obj.s1() 15 obj.f1()#繼承了父類的方法
子類物件繼承了父類的方法。
執行結果:
S.s1 F.f1 Process finished with exit code 0
覆蓋父類中的方法
1 class F: 2 def f1(self): 3 print("F.f1") 4 5 def f2(self): 6 print("F.f2") 7 8 class S(F): 9 def s1(self): 10 print("S.s1") 11 12 def f2(self):#覆蓋掉父類的方法f2 13 print("S.f2") 14 15 obj = S() 16 17 obj.f1()#繼承了父類的方法18 19 obj.f2()#繼承了父類的方法,但是子類中有相同的方法則使用子類的方法 20 21 print("############################################################################################") 22 23 dui = S() 24 dui.s1() #s1中self是形參,指代dui 25 dui.f1()#其中self指代dui,即呼叫方法的物件
子類中有與父類相同的方法則使用子類自己的方法。
執行結果:
F.f1 S.f2 ############################################################################################S.s1 F.f1 Process finished with exit code 0
super:父類和子類相同的方法都執行
1 class F: 2 def f1(self): 3 print("F.f1") 4 5 def f2(self): 6 print("F.f2") 7 8 class S(F): 9 def s1(self): 10 print("S.s1") 11 12 def f2(self):#覆蓋掉父類的方法f2 13 super(S, self).f2()#當前類名、self 執行父類的f2方法 14 print("S.f2") 15 F.f2(self)#執行父類的f2方法 16 17 obj = S() 18 obj.f2()
13行和15行的結果一樣,推薦使用super方法。
執行結果:
F.f2
S.f2
F.f2
Process finished with exit code 0