1. ホーム
  2. python

[解決済み] Pythonでスーパーコンストラクタを呼び出すには?

2022-03-20 15:34:44

質問

class A:
    def __init__(self):
        print("world")

class B(A):
    def __init__(self):
       print("hello")

B()  # output: hello

私が扱ってきた他のすべての言語では、スーパーコンストラクタは暗黙のうちに呼び出されます。Pythonではどのように呼び出すのでしょうか?私はこう思います。 super(self) が、これはうまくいきません。

解決方法は?

他の回答と同様に、スーパークラスのメソッド(コンストラクタを含む)を呼び出す方法は複数ありますが、Python-3.xではそのプロセスが簡素化されています。

Python-3.x

class A(object):
 def __init__(self):
   print("world")

class B(A):
 def __init__(self):
   print("hello")
   super().__init__()

Python-2.x

python 2.xでは、少し冗長なバージョンを呼び出す必要があります。 super(<containing classname>, self) と等価である。 super() と同じように ドキュメント .

class A(object):
 def __init__(self):
   print "world"

class B(A):
 def __init__(self):
   print "hello"
   super(B, self).__init__()