[英]Python: An object constructor calls itself
我遇到了以下代码。 对象构造函数调用自身:
class StatusMixin(object):
def __init__(self):
super(StatusMixin, self).__init__()
self.does_something()
有没有任何实际的理由为什么这样实施? 我认为人们只在多重继承的上下文中使用super
方法。
你提到了多重继承。 这个类被描述为mixin:也就是说,它专门用于多重继承的情况。 它将是类层次结构中的元素之一,但不是顶部或底部。 这就是为什么它调用super
- 方法解析顺序中的下一个项目实际上不是object
,而是其他一些类。
考虑此层次结构:
class Super(object):
pass
class Sub(StatusMixin, Super)
pass
并检查Sub.mro()
:
[__main__.Sub, __main__.StatusMixin, __main__.Super, object]
所以你看到StatusMixin
超级调用的结果StatusMixin
不是object
,而是Super
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.