第十九集:三大特性-继承-菱形继承

'''

菱形继承:
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'>]


posted @ 2022-03-13 21:18  冬天里的狐狸  阅读(24)  评论(1编辑  收藏  举报