码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-07-03 22:46:48      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:pre   执行   strong   算法   执行顺序   soft   png   继承   顺序   

经典类和新式类

技术图片

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

 技术图片

 

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

标签:pre   执行   strong   算法   执行顺序   soft   png   继承   顺序   

原文地址:https://www.cnblogs.com/Sup-to/p/11129534.html

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