Python – 多重继承()-python
Python – 多重继承()
class Root:
def ping(self):
print(f'{self},ping() in Root')
def pong(self):
print(f'{self}.pong in Root')
def __repr__(self):
cls_name = type(self).__class__
return f'<instance of {cls_name}>'
class A(Root):
def ping(self):
print(f'{self},ping() in A')
super().ping()
def pong(self):
print(f'{self}.pong in A')
super().pong()
class B(Root):
def ping(self):
print(f'{self},ping() in B')
super().ping()
def pong(self):
print(f'{self}.pong in B')
class Left(A,B):
def ping(self):
print(f'{self},ping() in Left')
super().ping()
if __name__ == '__main__':
left1 = Left()
left1.ping()
'''
<instance of Left>.ping() in Left
<instance of Left>.ping() in A
<instance of Left>.ping() in B
<instance of Left>.ping() in Root
'''
if __name__ == '__main__':
left1 = Left()
left1.pong()
'''
<instance of Left>.pong in A
<instance of Left>.pong in B
'''
class Left(B,A):
def ping(self):
print(f'{self}.ping() in Left')
super().ping()
if __name__ == '__main__':
left1 = Left()
left1.pong()
'''
<instance of Left>.pong in B
'''
class LeftUA(U,A):
def ping(self):
print(f'{self}.ping() in LeftUA')
super().ping()
if __name__ == '__main__':
left3 = LeftUA()
left3.ping()
'''
<instance of LeftUA>.ping() in LeftUA
<instance of LeftUA>.ping() in U
<instance of LeftUA>.ping() in A
<instance of LeftUA>.ping() in Root
'''
class U():
def ping(self):
print(f'{self}.ping() in U')
super().ping()
class LeftAU(A,U):
def ping(self):
print(f'{self}.ping() in LeftAU')
super().ping()
if __name__ == '__main__':
left2 = LeftAU()
left2.ping()
'''
<instance of LeftAU>.ping() in LeftAU
<instance of LeftAU>.ping() in A
<instance of LeftAU>.ping() in Root
'''
————————
class Root:
def ping(self):
print(f'{self},ping() in Root')
def pong(self):
print(f'{self}.pong in Root')
def __repr__(self):
cls_name = type(self).__class__
return f'<instance of {cls_name}>'
class A(Root):
def ping(self):
print(f'{self},ping() in A')
super().ping()
def pong(self):
print(f'{self}.pong in A')
super().pong()
class B(Root):
def ping(self):
print(f'{self},ping() in B')
super().ping()
def pong(self):
print(f'{self}.pong in B')
class Left(A,B):
def ping(self):
print(f'{self},ping() in Left')
super().ping()
if __name__ == '__main__':
left1 = Left()
left1.ping()
'''
<instance of Left>.ping() in Left
<instance of Left>.ping() in A
<instance of Left>.ping() in B
<instance of Left>.ping() in Root
'''
if __name__ == '__main__':
left1 = Left()
left1.pong()
'''
<instance of Left>.pong in A
<instance of Left>.pong in B
'''
class Left(B,A):
def ping(self):
print(f'{self}.ping() in Left')
super().ping()
if __name__ == '__main__':
left1 = Left()
left1.pong()
'''
<instance of Left>.pong in B
'''
class LeftUA(U,A):
def ping(self):
print(f'{self}.ping() in LeftUA')
super().ping()
if __name__ == '__main__':
left3 = LeftUA()
left3.ping()
'''
<instance of LeftUA>.ping() in LeftUA
<instance of LeftUA>.ping() in U
<instance of LeftUA>.ping() in A
<instance of LeftUA>.ping() in Root
'''
class U():
def ping(self):
print(f'{self}.ping() in U')
super().ping()
class LeftAU(A,U):
def ping(self):
print(f'{self}.ping() in LeftAU')
super().ping()
if __name__ == '__main__':
left2 = LeftAU()
left2.ping()
'''
<instance of LeftAU>.ping() in LeftAU
<instance of LeftAU>.ping() in A
<instance of LeftAU>.ping() in Root
'''