码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-05-12 01:37:46      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:同名   image   self   面向对象编程   面向对象   入门   解释   解析   直接   

一:多重继承

  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()获得父类的定义

标签:同名   image   self   面向对象编程   面向对象   入门   解释   解析   直接   

原文地址:https://www.cnblogs.com/jack-zh/p/10849735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!