本文实例讲述了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