考虑以下课程:
class Car():
def __init__(self, model):
self.model = model
如果我想定义特定的模型,我可以这样做:
class FordGT(Car):
model = "Ford GT"
def __init__(self):
Car.__init__(self,self.model)
通过这种方式,我可以创造出大量不同的车型。这样做的唯一问题是,对于每个车型,我都在重复 init 功能。
def __init__(self):
Car.__init__(self,self.model)
代码重复给我总是代码不好的标志。我怎么能解决这个问题?是否可以将 init 参数传递给父级而不在子级上使用 init ?
答案 0 :(得分:1)
首先,你需要放弃那种过于宽泛的假设。重复的代码不一定是错误的代码,如果通过重复某些事情,你可以使代码更加清晰。
其次,我不明白为什么你需要__init__
,或者调用超类方法。从最初在子类上定义的方法访问时,self.model
是相同的,因为它来自最初在超类上定义的方法;这是继承的全部要点。所以你可以在整个过程中使用该属性。