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方法。

执行结果:

扫描二维码关注公众号,回复: 3632309 查看本文章
F.f2
S.f2
F.f2

Process finished with exit code 0

猜你喜欢

转载自www.cnblogs.com/112358nizhipeng/p/9818054.html