zoukankan      html  css  js  c++  java
  • super

    super() 找MRO顺序的下一个
    # class Base1:
    #     def chi(self):
    #         print("我是可怜的Base1")
    #
    # class Base2:
    #     def chi(self):
    #         print("我是可怜的Base2")
    #
    # class Base3:
    #     def chi(self):
    #         print("我是可怜的Base3")
    #
    # class Bar(Base1, Base2, Base3):
    #     def chi(self):
    #         print("我是Bar里面的吃1")
    #         # super(类名, self) 从某个类开始找下一个MRO
    #         super(Base2, self).chi() # 此时调用的super. 在Bar调用 -> super表示找MRO里的下一个
    #         # super().chi() # super(Bar, self).chi()
    #         print("我是Bar里面的吃2")
    #
    # b = Bar() # Bar, Base1, Base2, Base3, object
    # b.chi()
    # print(Bar.__mro__)
    
    
    # class Base1:
    #     def chi(self):
    #         super().chi() # super找的是MRO的下一个.
    #         print("我是可怜的Base1")
    #
    # class Base2:
    #     def chi(self):
    #         super().chi()
    #         print("我是可怜的Base2")
    #
    # class Base3:
    #     def chi(self):
    #         print("我是可怜的Base3")
    #
    # class Bar(Base1, Base2, Base3):
    #     def chi(self):
    #         print("我是Bar里面的吃1")
    #         # super(类名, self) 从某个类开始找下一个MRO
    #         super(Bar, self).chi() # 此时调用的super. 在Bar调用 -> super表示找MRO里的下一个
    #         # super().chi() # super(Bar, self).chi()
    #         print("我是Bar里面的吃2")
    #
    # b = Bar() # 报错 Base1 object
    # b.chi() # 报错
    # # 坑
    
    
    
    # MRO + super ⾯试题
    class Init(object):
        def __init__(self, v): # 2
            print("init")
            self.val = v
    
    class Add2(Init):
        def __init__(self, val): # 2
            print("Add2")
            super(Add2, self).__init__(val) # Mult
            print(self.val)
            self.val += 2
    
    class Mult(Init):
        def __init__(self, val):
            print("Mult")
            super(Mult, self).__init__(val) # Haha
            self.val *= 5
    
    class HaHa(Init):
       def __init__(self, val):
            print("哈哈")
            super(HaHa, self).__init__(val) # Init
            self.val /= 5
    
    class Pro(Add2,Mult,HaHa): #
        pass
    
    class Incr(Pro): # incr->pro->add2->Mult->HaHa->init
        def __init__(self, val): # 5
            super(Incr, self).__init__(val) # Add2
            self.val += 1
    
    # Add2
    # Mult
    # 哈哈
    # init
    # 5.0
    # 8.0
    
    
    
    # Add2
    # init
    # 2
    # 4
    

      

  • 相关阅读:
    js用8421码实现10进制转2进制
    什么?toggle(fn1, fn2)函数在1.9版本jq被移除? 来来来,自己撸一个
    js获取鼠标点击的对象,点击另一个按钮删除该对象
    html5小结
    iphone状态栏高度?
    制作手机相册 全屏滚动插件fullpage.js
    js 相关知识整理(一)
    css 居中问题
    进度条
    @Html.Raw()
  • 原文地址:https://www.cnblogs.com/YangWenYu-6/p/10187667.html
Copyright © 2011-2022 走看看