擅长:python、mysql、java
<p>使用<code>super</code>调用超类方法时,通常需要当前类和当前实例作为参数:</p>
<pre><code>super(Centaur, self).__init__(...)
</code></pre>
<p>现在,问题出在Python处理<a href="https://stackoverflow.com/questions/3277367/how-does-pythons-super-work-with-multiple-inheritance#comment15038776_3277407">walking the superclasses</a>的方式上。如果<code>__init__</code>方法没有匹配的签名,那么调用可能会导致问题。从链接的示例:</p>
^{pr2}$
<p>输出为:</p>
<pre><code>$ python2 super.py
second prologue
third prologue
first prologue
first epilogue
third epilogue
second epilogue
that's it
</code></pre>
<p>这显示了调用构造函数的顺序。还要注意,子类构造函数都有兼容的签名,因为它们是在心里彼此编写的。在</p>