(一)Python入门-6面向对象编程:08多重继承-mro()-super()得到父类的定义

一:多重继承

  Python支持多重继承,一个子类能够有多个“直接父类”。这样,就具有了“多个父类”的特色。可是因为,这样会被“类的总体层次”搞的异常复杂,尽可能避免使用。spa

二:mro()

  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()来作。继承

  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搜索

相关文章
相关标签/搜索