擅长:python、mysql、java
<p>如果我正确理解了您描述的继承模型,那么您应该如何定义<code>Tigon</code>类:</p>
<pre><code>class Mammal(object):
def __init__(self):
super(Mammal, self).__init__()
class Crossbreeds(Mammal):
def __init__(self):
super(Crossbreeds, self).__init__()
class Predator(Mammal):
def __init__(self):
super(Predator, self).__init__()
class Lion(Predator):
def __init__(self):
super(Lion, self).__init__()
class Tigon(Lion, Crossbreeds, Predator):
def __init__(self):
super(Tigon, self).__init__()
t = Tigon()
</code></pre>
<p>由于狮子是一种掠食者,所以这个选择是等价的:</p>
^{pr2}$
<p>现在有一个快速的规则。每个类的构造函数在基类之后调用,但它们必须在类定义中以<strong>反向</strong>顺序出现。另外,重写父类中定义的方法的类必须首先出现在类定义中——这意味着如果要重写Lion中的Predator方法,Lion应该在定义中出现在Predator之前。对此的更详细的解释在<a href="https://stackoverflow.com/questions/6057540/python-super-should-be-working-but-isnt/6057743#6057743">Jan Hudec's answer</a>中。在</p>