多继承
钻石继承法 A
D继承的B和C,B和C继承的A
#继承 单继承==减少了代码的重复性
#继承表达的是一种 子类是父类的关系
#钻石继承
# class A:
# def func(self):print("A")
# class B(A):
# def func(self): print("B")
# class C(A):
# def func(self): print("C")
# class D(B,C):#从做到右一个一个找,如果左边没有的话,不会去左边的上一级去找,会先看右边有没有,右边没有的话,会去上一级找
# pass
# d=D()
# d.func()
#六边形继承
# class F:
# def func(self):
# print("F")
# class A(F):
# def func(self):print("A")
# class B(A):
# def func(self): print("B")
# class E(F):
# pass
# class C(E):
# def func(self): print("C")
# class D(B,C):#从做到右一个一个找,如果左边没有的话,不会去左边的上一级去找,会先看右边有没有,右边没有的话,会去上一级找
# pass
# d=D()
# print(D.mro())#mro方法可以查他的继承方式,mor只在新式类中使用
#新式类的继承方式,遵循的是广度优先的方法
#经典类中 深度优先
class A(object):
def func(self):
print("A")
class B(A):
def func(self):
super().func()
print("B")
class C():
def func(self):
super().func()
print("C")
class D(B,C):#从做到右一个一个找,如果左边没有的话,不会去左边的上一级去找,会先看右边有没有,右边没有的话,会去上一级找
def func(self):
super().func()
print("D")
d=D()
d.func()
print(D.mro())#
#单继承
#先抽象,几个类之间的代码抽象出来成为父类
#子类没有自己的名字,之类可以使用父类的方法和属性
#子类如果自己有的话,一定先使用自己的
#在类中使用self的时候,一定要先看清楚self指向谁
#多继承
#新式类和经典类
#多继承寻找名字的顺寻:
新式类广度优先
#在新式类中有一个mro方法,可以查看广度优先的顺序
#在python3中有一个super方法,可以查广度优先的顺序
经典类广度优先