"""
类的多继承:
D里面有参数时,调用D的
当 D 里面没有调用的参数时,到父类里找。D 的父类是 B 和 C,且定义的顺序是 B在左,C在右。继承顺序是从左到右的。
当在B中找到需调用的参数时,就停止。当B中没有时,再到C中找。当B和C都没有时,再到A中找。
"""
# D中有方法或参数可用,调用D
class A:
def __init__(self):
print('A')
class B(A):
def __init__(self):
print('B')
class C(A):
def __init__(self):
print('C')
class D(B, C):
def __init__(self):
print('D')
d = D()
"""
打印结果:
D
"""
# D中没有方法或参数可用,调用父类,父类B中有方法或参数
class A2:
def __init__(self):
print('AA')
class B2(A2):
def __init__(self):
print('BB')
class C2(A2):
def __init__(self):
print('CC')
class D2(B2, C2):
pass
d2 = D2()
"""
打印结果:
BB
"""
# D中没有方法或参数可用,调用父类,父类B中没有方法或参数,调用父类C
class A3:
def __init__(self):
print('AAA')
class B3(A3):
pass
class C3(A3):
def __init__(self):
print('CCC')
class D3(B3, C3):
pass
d3 = D3()
"""
打印结果:
CCC
"""
# D中没有方法或参数可用,调用父类,父类B和C中没有方法或参数,调用B和C的父类A
class A4:
def __init__(self):
print('AAAA')
class B4(A4):
pass
class C4(A4):
pass
class D4(B4, C4):
pass
d4 = D4()
"""
打印结果:
AAAA
"""
# D中没有方法或参数可用,调用父类,父类B和C中没有方法或参数,调用B和C的父类A,父类A也没有方法或参数
class A5:
pass
class B5(A5):
pass
class C5(A5):
pass
class D5(B5, C5):
pass
d5 = D5()
"""
无打印结果
"""
class A():
def say_hi(self):
print("aaaaaa")
class B(A):
a = 1
def say_hi(self):
print("bbbbbb")
def a_say_hi(self):
super().say_hi()
def do_some_thing(self):
self.say_hi()
self.a_say_hi()
self.a += 1
b = B()
b.do_some_thing()