在python中将参数传递给超类__init__

时间:2017-02-17 15:03:13

标签: python inheritance

考虑以下课程:

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

1 个答案:

答案 0 :(得分:1)

首先,你需要放弃那种过于宽泛的假设。重复的代码不一定是错误的代码,如果通过重复某些事情,你可以使代码更加清晰。

其次,我不明白为什么你需要__init__,或者调用超类方法。从最初在子类上定义的方法访问时,self.model是相同的,因为它来自最初在超类上定义的方法;这是继承的全部要点。所以你可以在整个过程中使用该属性。