'''
# 在实现继承的语法后,程序会自动生成一个继承的列表 MRO(method realtion order) 方法关系列表
# MRO列表生成的原则:
# # 1.子类永远在父类的前面
# # 2.同一等级的类,按照子类中的继承顺序衔接
# # 3.先子类,后父类的顺序原则,最后的类时系统提供的Object类
# super() 在调用时,并不是查找父类而是去MRO列表去找上一个类
# super()方法在调用时,会自动调用把self传入到上一级类的方法中
# 类关系检测 issubclass()
# issubclass() 检测一个类是否是另一个类的子类
'''
class A():
pass
class B(A):
pass
class C(A):
pass
class D(B, C):
pass
print(D.mro())
# [<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]
print(C.mro())
# [<class '__main__.C'>, <class '__main__.A'>, <class 'object'>]
# 检测一个类是另一个类的子类
res = issubclass(D, B) # D类是不是B类的子类
res = issubclass(C, B) # D类是不是B类的子类
print(res)