1. ホーム
  2. python

Pythonで継承されたクラスからベースクラスのメソッド(とコンストラクタ)を正しく呼び出すには?[重複している]をクリックします。

2023-08-16 05:42:13

質問

仮に Base クラスがあり Child を継承したクラス Base . Pythonで子クラスから基底クラスのコンストラクタを呼び出す正しい方法は何でしょうか?私は super ?

今までの例です。

class Base(object):
   def __init__(self, value):
       self.value = value
   ...

class Child(Base):
   def __init__(self, something_else):
       super(Child, self).__init__(value=20)
       self.something_else = something_else
   ...

これは正しいですか?

ボダ・チルドーさん、ありがとうございます。

どのように解決するのですか?

その通りです。 なお、このメソッドは __init__ メソッドを直接 Base クラスで、このように

class Child(Base):
    def __init__(self, something_else):
        Base.__init__(self, value = 20)
        self.something_else = something_else

これは私が一般的に行っている方法です。 しかし、多重継承がある場合にはあまりうまく動作しないので、推奨されません。 もちろん、多重継承はそれ自体でさまざまな奇妙な効果をもたらすので、私は疫病神のようにそれを避けています。

一般に、もし継承するクラスが super を使用している場合、あなたも同様に使用する必要があります。