2つのクラス(1つは親クラス、もう1つはサブクラス)があるとします。メソッドが異なるサブクラスでも定義されている場合、親クラスのメソッドを参照するにはどうすればよいですか?
コードは次のとおりです。
class A:
def __init__(self, num):
self.value=num
def f(self, num):
return self.value+2
class B(A):
def f(self, num):
return 7*self.f(num)
最後の行で、無限再帰を作成するBのメソッド自体ではなく、「self.f(num)」コマンドで親クラスAを参照します。前もって感謝します。
Aを使用することがわかっている場合は、この方法で明示的にAを参照することもできます。
class B(A):
def f(self,num):
return 7 * A.f(self,num)
メンバー関数A.f()にself引数を明示的に与える必要があることを忘れないでください
他の答えに沿って、スーパークラスメソッド(コンストラクターを含む)を呼び出す方法は複数ありますが、Python-3.xではプロセスが簡略化されています。
Python-2.x
_class A(object):
def __init__(self):
print "world"
class B(A):
def __init__(self):
print "hello"
super(B, self).__init__()
_
Python-3.x
_class A(object):
def __init__(self):
print "world"
class B(A):
def __init__(self):
print "hello"
super().__init__()
_
super()
は、 ドキュメント に従ってsuper(<containing classname>, self)
と同等になりました。
シンプルに保ちませんか?
class B(A):
def f(self, num):
return 7 * A.f(self, num)
class B(A):
def f(self, num):
return 7 * super(B, self).f(num)
Pythonで子クラスから親クラスのメソッドを呼び出す? で私の答えを確認してください。
ここでは、他の一部のユーザーを少しひねります(スーパーを使用しない)。
superを使用するか、より明示的にしてこのようなことを行うことができます。
class B(A):
def f(self, num):
return 7 * A.f(self, num)