单继承:
1.先抽象再继承,几个类之间的相同代码抽象出来,成为父类(优化代码,减少重复)
2.子类没有自己的名字就可以使用父类的方法和属性
3.如果子类和父类中有相同的方法和属性,在子类中调用时一定先用子类的,如果子类中没有继续在父类中寻找,如果父类中也没有,则会报错。
4.在类中使用self时,一定要看清楚self指向谁
5.如果既想使用新功能,又想使用父类原有的功能,还需要在子类中调用父类
多继承:
1.python3中所有类都是新式类,即广度优先,python2中经典类与新式类并存,经典类中 深度优先
2.多继承中子类调用一个方法,默认就近原则,eg:class A(B,C,D):默认先继承B
3.在新式类中,有一个 类名.mro方法,查看广度优先的继承顺序
4.python3中 super方法:根据广度优先的继承顺序寻找上一个类(super()方法是根据调用者的节点位置的广度优先顺序来找的,并不是单纯的找父类)
例如:
class A: def func(self): print('A') class B(A): def func(self): super().func() print('B') class C(A): def func(self): super().func() print('C') class D(B,C): def func(self): super().func() print('D') d = D() d.func() 结果: A C B D