【发布时间】:2019-11-28 18:23:56
【问题描述】:
我需要python在下面的程序中使用基类的方法。 我阅读了很多文档,即使在那之后,我也无法弄清楚 super 在以下情况发生时是如何工作的。
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):
return self.velocity
def __self__(self):
return self.powertrain #just self.powertrain to print it
class Conventional(Car):
def speed(self):
return self.velocity *self.time*2
class Electric(Car):
def __init__(self):
super().__init__()
def speed(self):
return super().velocity * super().time*3
class Hybrid(Electric,Conventional):
pass
现在我需要混合对象来使用 Car 类的方法,我想我可以在这里使用组合概念。但我需要知道 super 在这里是如何工作的。我也知道 mro 获取 python 查找方法的顺序。先生。
car = Hybrid("blue", "Audi", "hyrid", 50)
car.speed()
欢迎任何更好的方式来编写上述代码。 我想如果我使用 super() 得到上述问题的解决方案,我可以正确理解 super 的完整功能。 要查看所有可能性,我使用了不同的语法。别介意
提前致谢
【问题讨论】:
-
我希望它能澄清你所有的疑惑makina-corpus.com/blog/metier/2014/…