mus*_*ero 3 python multiple-inheritance mixins
我遇到了以下代码.对象构造函数调用自身:
class StatusMixin(object):
def __init__(self):
super(StatusMixin, self).__init__()
self.does_something()
Run Code Online (Sandbox Code Playgroud)
有没有任何实际的理由为什么这样实施?我认为人们super只在多重继承的上下文中使用该方法.
你提到了多重继承.这个类被描述为mixin:也就是说,它专门用于多重继承的情况.它将是类层次结构中的元素之一,但不是顶部或底部.这就是它调用的原因super- 方法解析顺序中的下一个项目实际上不是object,而是其他一些类.
考虑此层次结构:
class Super(object):
pass
class Sub(StatusMixin, Super)
pass
Run Code Online (Sandbox Code Playgroud)
并检查Sub.mro():
[__main__.Sub, __main__.StatusMixin, __main__.Super, object]
Run Code Online (Sandbox Code Playgroud)
所以你看到这里超级电话的结果StatusMixin根本不是object,但是Super.
| 归档时间: |
|
| 查看次数: |
644 次 |
| 最近记录: |