Python支持多重继承,一个子类能够有多个“直接父类”。这样,就具有了“多个父类”的特色。可是因为,这样会被“类的总体层次”搞的异常复杂,尽可能避免使用。spa
Python支持多继承,若是父类中有相同名字的方法,在子类没有指定父类名时,解释器将 “从左向右”按顺序搜索。code
MRO(MethodResolution Order):方法解析顺序。 咱们能够经过mro()方法得到 “类的层次结构”,方法解析顺序也是按照这个“类的层次结构”寻找的。对象
【操做】多重继承-mro()blog
#多重继承-mro() class A: def aa(self): print('aa') def say(self): print('say AAA') class B: def bb(self): print('bb') def say(self): print('say BBB') class C(B,A): def cc(self): print('cc') cc = C() print(C.mro()) #打印类的层次结构 cc.say() #解释器寻找方法是‘从左到右’的方式寻找,此时会执行B中的say()
在子类中,若是想要得到父类的方法时,咱们能够经过 super()来作。继承
super()表明父类的定义,不是父类对象。io
【操做】class
#super() class A: def say(self): print('A:',self) print('say AAA') class B(A): def say(self): #A.say(self) #调用父类的say()方法 super().say() #经过super()调用父类方法 print('say BBB') b = B() b.say()
运行结果:object
A: <__main__.B object at 0x0000020326058AC8>
say AAA
say BBB搜索