重複の可能性:
super()を使用するときに自分のクラスを指定する必要があるのはなぜですか?それを回避する方法はありますか?
私はこの本を読んでいました-"Core Python Programming"
そして、私はそれが私が言うだろうと本当にとても素晴らしいと思いました。しかし、「継承」というトピックを勉強しているときに、ある時点で混乱しました。
この本はどこかで、基本クラスのメソッドを見つけるために使用できると述べています。また、superなしの場合のように、明示的に渡す必要はありませsuper()
ん。super class method
self
サンプルコードは次のとおりです。-
# Invoking super class method without super() .. Need to pass `self` as argument
class Child(Parent):
def foo(self):
Parent.foo(self)
# Invoking with super().
# No need to pass `self` as argument to foo()
class Child(Parent1, Parent2):
def foo(self):
super(Child, self).foo()
print 'Hi, I am Child-foo()'
私の質問は、なぜ呼び出しを渡す必要があるのかということclassname
ですsuper()
。クラス名は、superが呼び出されるクラスから推測できるためです。
したがって、super()はから呼び出されるため
class Child
、クラス名はそこに暗黙的に含まれている必要があります。では、なぜそれが必要なのですか?
*編集:Child
-super()にパラメーターとして指定しても、情報が提供されないため、意味がありません。..を使用することもできますsuper(self)
。また、メソッドは、スーパークラスで次の順序で検索されます。括弧内に記載されています。