zoukankan      html  css  js  c++  java
  • (一)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

  • 相关阅读:
    RabbitMQ:六、网络分区
    RabbitMQ:五、高阶
    RabbitMQ:四、跨越集群
    数据结构:红黑树
    RabbitMQ:三、进阶
    面对对象多态的异常
    面向对象三大特征---多态
    面对对象继承的优点和缺点
    面对对象当中的代码块
    面对对象this关键字
  • 原文地址:https://www.cnblogs.com/jack-zh/p/10849735.html
Copyright © 2011-2022 走看看