当前位置: 移动技术网 > IT编程>脚本编程>Python > MRO + super面试题(详解)

MRO + super面试题(详解)

2018年12月25日  | 移动技术网IT编程  | 我要评论

艺术字体打包下载,北京青年txt,新家优装网设计

class init(object):
    def __init__(self, v): 
        print("init")
        self.val = v

class add2(init):
    def __init__(self, val): 
        print("add2")
        super(add2, self).__init__(val)
        print(self.val)
        self.val += 2

class mult(init):
    def __init__(self, val):
        print("mult")
        super(mult, self).__init__(val) 
        self.val *= 5

class haha(init):
   def __init__(self, val):
        print("哈哈")
        super(haha, self).__init__(val)
        self.val /= 5

class pro(add2,mult,haha):    pass

class incr(pro): 
    def __init__(self, val): 
        super(incr, self).__init__(val) 
        self.val += 1

p = incr(5)
print(p.val)

c = add2(2)
print(c.val)

super(类名, self) 从某个类开始找下一个mro

第一步:

  先找一下整个程序的mro

  用c3算法查找:

查找顺序如上,知道了执行顺序就可以按流程执行了

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网