• 二十五.面向对象(经典类和新式类)


    经典类和新式类

    class A(object):
        pass
    
    class B(A):
        pass
    
    class C(B):
        pass
    
    class D(object):
        pass
    
    class E(D,C):
        pass
    
    class F(object):
        pass
    
    class G(F):
        pass
    
    class H(C,G):
        pass
    
    class Foo(E,H):
        pass
    
    # a1=Foo()
    print(Foo.__mro__)
    # (<class '__main__.Foo'>, <class '__main__.E'>, <class '__main__.D'>, <class '__main__.H'>, <class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class '__main__.G'>, <class '__main__.F'>, <class 'object'>)
    L(E)=E,D,C,B,A,object
    L(H)=H,C,B,A,G,F,object
    Foo=(object)+(G,F,object)
    Foo ,E,D,H,C,B,A,G,F,object
    
    经典类和新式类
       py2:
          经典类
          新式类   如果自己或自己的前辈只要有人继承object 那么此类就是新式类
    
       py3:
          新式类
    
          经典类 和新式类的查找成员的顺序不一样
    
          经典类 :一条道路走到黑 (深度优先)
    
          新式类 : c3算法实现  广度优先
    
          Foo+ (C,D,F,G)+(G,D,G,W)+(I,G,D,W)
    
          Foo I  B
    
          获取 第一个表头  和 其他表尾进行比较
                 不存在   则拿走
                 如果存在 则放弃 然后获取第二个表的表头 再次和其他表的表尾进行比较
    
          注意事项
    
              super 是遵循__mro__执行顺序

     新式类py3

     

  • 相关阅读:
    元素类型
    PS
    盒模型
    文本样式
    WebStorm、IntelliJ IDEA、JetBrains、PhpStorm、RubyMine、PyCharm
    微信iOS WKWebview 网页开发适配指南
    js取url参数
    windows 80 端口占用
    前端Demo常用库文件链接
    MAC下利用Github 、hexo、 多说、百度统计 建立个人博客指南
  • 原文地址:https://www.cnblogs.com/Sup-to/p/11129534.html
Copyright © 2020-2023  润新知