<p>这是Python中类继承的一个例子。您已将<code>BankAccount</code>类继承到<code>MinimumBalanceAccount</code>类。但是,通过在<code>MinimumBalanceAccount</code>类中引入<code>__init__</code>函数,您已经重写了<code>BankAccount</code>类的<code>__init__</code>函数。基类可能会初始化一些您需要的变量。因此在子类'<code>__init__</code>构造函数中调用它以确保。在</p>
<p>您可以使用<code>super</code>类来实现相同的行为。
在python2.x中,等效的</p>
<pre><code>class MinimumBalanceAccount(BankAccount):
def __init__(self, minimum_balance):
self.minimum_balance = minimum_balance
super(MinimumBalanceAccount, self).__init__()
</code></pre>
<p>或者在python3.x中</p>
^{pr2}$
<p>但是,您必须明白,它只会运行它首先从基方法中找到的<code>__init__</code>方法。因此,就多重继承而言,如果基类中没有实现<code>super</code>,则很难调用其他各种类的<code>__init__</code>方法。所以请避免不惜一切代价使用多重继承,或者在所有类中实现<code>super</code>。在</p>
<pre><code>(eg)
class BankAccount(object):
def __init__(self):
# Some action here
# But no super method called here
class MinimumBalanceAccount(BankAccount, LoanAccount):
def __init__(self, minimum_value):
super(MinimumBalanceAccount, self).__init__() # Calls BankAccount.__init__()
super(MinimumBalanceAccount, self).__init__() # Still calls the same
</code></pre>
<p>如果您仍然希望进行多重继承,最好使用<code>ParentClass.__init__</code>方法,或者在所有基类中添加对<code>__init__</code>的<code>super</code>方法调用。在</p>