• (一)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

  • 相关阅读:
    python3.0与python2.0有哪些不同
    python常用内置模块,执行系统命令的模块
    06python 之基本数据类型
    python语言简介、解释器、字符编码介绍
    http协议&接口规范&接口测试入门
    基于APPIUM测试微信公众号的UI自动化测试框架(结合Allure2测试报告框架)
    SQL注入工具sqlmap的注入过程记录
    unittest框架
    测试转型之路--学习ing
    Tomcat分析-启动过程
  • 原文地址:https://www.cnblogs.com/jack-zh/p/10849735.html
Copyright © 2020-2023  润新知