Python入门-6面向对象编程:08多重继承-mro()-super()获得父类的定义
Posted jack-zh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python入门-6面向对象编程:08多重继承-mro()-super()获得父类的定义相关的知识,希望对你有一定的参考价值。
一:多重继承
Python支持多重继承,一个子类可以有多个“直接父类”。这样,就具备了“多个父类”的特点。但是由于,这样会被“类的整体层次”搞的异常复杂,尽量避免使用。
二:mro()
Python支持多继承,如果父类中有相同名字的方法,在子类没有指定父类名时,解释器将 “从左向右”按顺序搜索。
MRO(MethodResolution Order):方法解析顺序。 我们可以通过mro()方法获得 “类的层次结构”,方法解析顺序也是按照这个“类的层次结构”寻找的。
【操作】多重继承-mro()
#多重继承-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()来做。
super()代表父类的定义,不是父类对象。
【操作】
#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()
运行结果:
A: <__main__.B object at 0x0000020326058AC8>
say AAA
say BBB
以上是关于Python入门-6面向对象编程:08多重继承-mro()-super()获得父类的定义的主要内容,如果未能解决你的问题,请参考以下文章