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类的优先级最高,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
A.__init__(self, x) # init A (A最优先)
B.__init__(self, y) # init B
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__':
print(D.mro())
d = D(1,2,3)
d.show_x() # 1
d.show_y() # 2
d.show_z() # 3
d.show_name() # A
print(E.mro())
e = E(1,2,3)
e.show_x() # 1
e.show_y() # 2
e.show_z() # 3
e.show_name() # A
input()
转载于:https://my.oschina.net/u/3833922/blog/3046973