MRO + super面试题(详解)

2018-12-25 08:24:49来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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算法查找:

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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:PyQtGraph Basic Realization[2]

下一篇:Scrapy 基础-01