Python中C3算法如何实现多继承?
- 内容介绍
- 文章标签
- 相关推荐
本文共计228个文字,预计阅读时间需要1分钟。
pythonclass A(object): passclass B(A): passclass C(B): passclass D(object): passclass E(D, C): passclass F(object): passclass G(F): passclass H(C, G): passclass Foo(E, H): pass
print(E.__mro__)
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
print(E.__mro__) #按C3算法打印出的继承顺序
# print(H.__mro__)经典类和新式类
py2:
经典类
新式类,如果自己或自己的前辈只要有人继承object,那么此类就是新式类。
py3:
新式类
经典类和新式类的查找成员的顺序不一样。
经典类,一条道走到黑(深度优先)。
新式类,C3算法实现(python2.3更新时c3算法)。
注意事项:
super关键字是遵循__mro__执行顺序。
本文共计228个文字,预计阅读时间需要1分钟。
pythonclass A(object): passclass B(A): passclass C(B): passclass D(object): passclass E(D, C): passclass F(object): passclass G(F): passclass H(C, G): passclass Foo(E, H): pass
print(E.__mro__)
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
print(E.__mro__) #按C3算法打印出的继承顺序
# print(H.__mro__)经典类和新式类
py2:
经典类
新式类,如果自己或自己的前辈只要有人继承object,那么此类就是新式类。
py3:
新式类
经典类和新式类的查找成员的顺序不一样。
经典类,一条道走到黑(深度优先)。
新式类,C3算法实现(python2.3更新时c3算法)。
注意事项:
super关键字是遵循__mro__执行顺序。

