1. ホーム
  2. python

[解決済み] Pythonで'super'は何をするのですか?- super().__init__() と明示的なスーパークラス __init__() の違い

2022-03-14 03:48:53

質問

の違いは何ですか?

class Child(SomeBaseClass):
    def __init__(self):
        super(Child, self).__init__()

とします。

class Child(SomeBaseClass):
    def __init__(self):
        SomeBaseClass.__init__(self)

見たことある super は単一継承のクラスでよく使われます。多重継承で使う理由はわかりますが、このような状況で使うメリットは何なのかが不明です。

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

のメリット super() 主に、親メソッドを使用するすべてのメソッドに基底クラスの名前をハードコードする必要がないことです。

しかし、多重継承の場合は super() . これには、ミキシン、インターフェース、抽象クラスなどの一般的なイディオムが含まれます。これは、後であなたのコードを拡張するコードにも及びます。もし、誰かが後から Child とmixinがあると、そのコードは正しく動作しないでしょう。