1. 程式人生 > >Python面向物件(繼承)

Python面向物件(繼承)

面向物件三大特性:繼承

 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