1. ホーム
  2. python

[解決済み] Pythonのsuper()と__init__()メソッドの理解【重複

2022-03-18 03:51:25

質問

の使い方を理解しようとしているのです。 super() . 見たところ、両方の子クラスを作成することができ、ちょうど良い感じです。

以下の2つの子クラスの実際の違いについて知りたいのですが。

class Base(object):
    def __init__(self):
        print "Base created"

class ChildA(Base):
    def __init__(self):
        Base.__init__(self)

class ChildB(Base):
    def __init__(self):
        super(ChildB, self).__init__()

ChildA() 
ChildB()

解決方法は?

super() を使えば、明示的に基底クラスを参照する必要がなくなるので、良いことです。しかし、主な利点は多重継承の場合に生じます。 楽しいこと が起こる可能性があります。例えば スーパーに関する標準的なドキュメント を使うことができます。

注意点 は、Python 3.0 で構文が変更されました。 と言えばいいのです。 super().__init__() の代わりに super(ChildB, self).__init__() というのは、IMOでは、かなりすっきりしています。また、標準のドキュメントでは を使用するためのガイドです。 super() という文章があり、かなり説明的です。