'''
菱形继承:
HuMan
F M
C
'''
'''
super()
使用super取调用父类的方法时,实际上是在用super调用MRO列表中的上一级的方法
使用super去访问父类的属性时,实际上是在用super调用MRO列表中的上一级的属性
super()本身调用父级方法时传递的self对象,就是这个方法中的self对象自己
'''
class HuMan():
num = 444
def eat(self):
print(self.num)
print(self)
print('祖先吃')
class F(HuMan):
num = 333
def eat(self):
super().eat()
print(super().num)
print('我是父类吃饭')
class M(HuMan):
num = 222
def eat(self):
super().eat()
print(super().num)
print('我是母亲吃饭')
class C(F, M):
num = 111
def eat(self):
super().eat()
print(super().num)
print('孩子吃饭')
c = C()
c.eat()
# 继承关系:
# C->F->M-HuMan
# 结果
# 111
# <__main__.C object at 0x0000015F1343D190>
# 祖先吃
# 444
# 我是母亲吃饭
# 222
# 我是父类吃饭
# 333
# 孩子吃饭
# mro() 获取MRO列表 就是类的继承关系
print(C.mro())
# 这个方法就打印出了这个类的继承关系列表
# [<class '__main__.C'>, <class '__main__.F'>, <class '__main__.M'>, <class '__main__.HuMan'>, <class 'object'>]