python

超轻量级php框架startmvc

Python实现带参数与不带参数的多重继承示例

更新时间:2020-05-20 10:12:01 作者:startmvc
本文实例讲述了Python实现带参数与不带参数的多重继承。分享给大家供大家参考,具体如下

本文实例讲述了Python实现带参数与不带参数的多重继承。分享给大家供大家参考,具体如下:

1. 不带参数的多重继承


# 作者: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. 带参数的多重继承


# 作者: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 带参数 不带参数 多重继承