单继承&多继承 注意点

单继承:

  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
View Code
原文地址:https://www.cnblogs.com/Hxx0916/p/9640471.html