<p>这应该起作用:</p>
<pre><code>super(Electric, Electric).speed(self, velocity)
</code></pre>
<p>说明:
super可以接受两个可选参数,即它应该使用的超类(直接超类)和它应该从中开始搜索MRO的类:
MRO:混合动力->;电动->;汽车->;常规->;小型车
通过电气,我们制造MRO:
汽车->;常规->;小型车
(多重继承很糟糕)
当我们像这样解析继承时,我们还需要显式地传递当前对象(self)。
顺便说一句,你应该修复你的初始化,它们不能正确解析,你应该总是传递*参数,让超级解析参数为你</p>
<pre><code>class Car:
time = 2
def __init__(self, color, company,powertrain,velocity):
self.color = color
self.company = company
self.powertrain = powertrain
self.velocity = velocity
def speed(self, velocity):
return self.velocity
def __self__(self):
return self.powertrain #just self.powertrain to print it
class Conventional(Car):
def __init__(self,*args):
super().__init__(*args)
def speed(self):
return self.velocity *self.time*2
class Electric(Car):
def __init__(self,*args):
super().__init__(*args)
def speed(self):
return super().velocity * super().time*3
class Hybrid(Electric,Conventional):
def __init__(self,*args):
super().__init__(*args)
def speed(self):
return super(Electric, Electric
).speed(self,50)
car = Hybrid("blue", "Audi", "hyrid", 50)
car.speed()
</code></pre>