本文实例讲述了Python实现带参数与不带参数的多重继承。分享给大家供大家参考,具体如下:
1. 不带参数的多重继承
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# 作者:hhh5460 # 时间:2017.07.18 class A( object ): def show_x( self ): print ( 'A' ) class B( object ): def show_y( self ): print ( 'B' ) class C( object ): def show_z( self ): print ( 'C' ) class D(A, B, C): pass # 测试 if __name__ = = '__main__' : d = D() d.show_x() # A d.show_y() # B d.show_z() # C |
2. 带参数的多重继承
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# 作者:hhh5460 # 时间:2017.07.18 class A( object ): def __init__( self , x = 0 ): self ._x = x def show_x( self ): print ( self ._x) def show_name( self ): print ( 'A' ) class B( object ): def __init__( self , y = 0 ): self ._y = y def show_y( self ): print ( self ._y) def show_name( self ): print ( 'B' ) class C( object ): def __init__( self , z = 0 ): self ._z = z def show_z( self ): print ( self ._z) def show_name( self ): print ( 'C' ) # 注意下面两类D、E,都是继承A、B、C,且A类的优先级最高。但是三条__init__语句的顺序是相反的 class D(A, B, C): def __init__( self , x = 0 , y = 0 , z = 0 ): C.__init__( self , z) # init C B.__init__( self , y) # init B A.__init__( self , x) # init A (A最优先) class E(A, B, C): def __init__( self , x = 0 , y = 0 , z = 0 ): super (E, self ).__init__(x) # init A (A最优先) # 此句可简写成:super().__init__(x) super (A, self ).__init__(y) # init B super (B, self ).__init__(z) # init C # 测试 if __name__ = = '__main__' : d = D( 1 , 2 , 3 ) d.show_x() # 1 d.show_y() # 2 d.show_z() # 3 d.show_name() # A e = E( 1 , 2 , 3 ) e.show_x() # 1 e.show_y() # 2 e.show_z() # 3 e.show_name() # A |
希望本文所述对大家Python程序设计有所帮助。
原文链接:http://www.cnblogs.com/hhh5460/p/7198551.html