python基础17 ---继承补充知识
一、继承的顺序 1、在python中的类可以集成多个类,既然是继承多个类就有类的寻找顺序这么一说。其寻找方法就有广度优先和深度优先两种。 2、当类是新式类,多继承的情况下会按照广度优先的顺序查找。 如图: 当H这个类是新式类也就是说它的父类中有object这个类,那么他要查找某个属性,会先从自己的类中查找,如果没有再查找父类的,查找顺序为:H->E->B->F->C->G->D->A。注意父类A是最后查找的,所以说他是广度优先。 当H这个类是经典类也就是说它的父类中没有object这个类,那么他要查找某个属性,会先从自己的类中查找,如果没有再查找父类的,其查找顺序为:H->E->B->A->F->C->G->D。注意父类D是最后查找的,所以说他是深度优先。 以上两种查找属性的情况是建立在他们的父类的父类是同一个类的前提下,如果没有同一个类这么一说那么他们的查找顺序都是广度优先。如果是新 式类的情况下可以用类名.mro()的方式查看继承的顺序。二、子类中调用父类的方法图1 如图1:以前子类调用父类的属性时是指名道姓的查找父类的属性,这样就么有了继承的顺序这么一说了。 如图二、现在调用父类方法直接是用一个super()对象来直接调用父类的__init__方法,对象和函数属性之间是绑定方法的关系, 默认会自动传参,因此不用写self本身