单继承&多继承 注意点

Posted hxx0916

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单继承&多继承 注意点相关的知识,希望对你有一定的参考价值。

单继承:

  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

 

以上是关于单继承&多继承 注意点的主要内容,如果未能解决你的问题,请参考以下文章

java中单继承,多接口的实现及一些注意事项

php如何实现多继承?

C++:多态(重写,多态原理单继承和多继承的虚函数表)

C++:多态(重写,多态原理单继承和多继承的虚函数表)

Lua面向对象----类继承多继承单例的实现

创建线程的7种方法&单线程 VS 多线程