1. ホーム
  2. python

[解決済み] 子クラスからベースクラスの __init__ メソッドを呼び出すには?重複

2022-06-11 23:32:13

質問

としてpythonのクラスがあるとします。

class BaseClass(object):
#code and the init function of the base class

といった子クラスを定義しています。

class ChildClass(BaseClass):
#here I want to call the init function of the base class

ベースクラスのinit関数がいくつかの引数を取り、それを子クラスのinit関数の引数として受け取る場合、これらの引数をどのようにベースクラスに渡せばよいのでしょうか?

私が書いたコードは

class Car(object):
    condition = "new"

    def __init__(self, model, color, mpg):
        self.model = model
        self.color = color
        self.mpg   = mpg

class ElectricCar(Car):
    def __init__(self, battery_type, model, color, mpg):
        self.battery_type=battery_type
        super(ElectricCar, self).__init__(model, color, mpg)

どこを間違えているのか?

どうすれば解決するのでしょうか?

あなたは super(ChildClass, self).__init__()

class BaseClass(object):
    def __init__(self, *args, **kwargs):
        pass

class ChildClass(BaseClass):
    def __init__(self, *args, **kwargs):
        super(ChildClass, self).__init__(*args, **kwargs)

インデントが正しくありません。以下は修正したコードです。

class Car(object):
    condition = "new"

    def __init__(self, model, color, mpg):
        self.model = model
        self.color = color
        self.mpg   = mpg

class ElectricCar(Car):
    def __init__(self, battery_type, model, color, mpg):
        self.battery_type=battery_type
        super(ElectricCar, self).__init__(model, color, mpg)

car = ElectricCar('battery', 'ford', 'golden', 10)
print car.__dict__

以下はその出力です。

{'color': 'golden', 'mpg': 10, 'model': 'ford', 'battery_type': 'battery'}