我遇到了以下代码。对象构造函数调用自身:
class StatusMixin(object):
def __init__(self):
super(StatusMixin, self).__init__()
self.does_something()
有没有任何实际的理由为什么这样实施?我认为人们只在多重继承的上下文中使用super
方法。
答案 0 :(得分:6)
你提到了多重继承。这个类被描述为一个mixin:也就是说,它特别是意图在多重继承的情况下使用。它将是类层次结构中的元素之一,但不是顶部或底部。这就是它调用super
的原因 - 方法解析顺序中的下一个项目实际上不是object
,而是其他一些类。
考虑这个层次结构:
class Super(object):
pass
class Sub(StatusMixin, Super)
pass
并检查Sub.mro()
:
[__main__.Sub, __main__.StatusMixin, __main__.Super, object]
所以你看到StatusMixin
中超级电话的结果根本不是object
,而是Super
。