Python のオブジェクト メソッドの定義は非常に奇妙です。最初のパラメータは通常 self という名前であり、これはオブジェクト自体を渡すために使用され、システムを呼び出すときに明示的に渡す必要はありません。自動的に通過します。
今日紹介する主役は super() で、Super() はクラスの継承でよく使用され、親クラスのメソッドを複数回呼び出す場合に実行されるのは 1 回だけです。実行を最適化します。以下で詳しく見てみましょう。
例を挙げます:
class Foo: def bar(self, message): print(message)
>>> Foo().bar("Hello, Python.") Hello, Python.
継承関係がある場合、サブクラスで親クラスのメソッドを呼び出す必要がある場合があります。この場合、最も簡単な方法は次のとおりです。オブジェクト呼び出しを変換します。クラスに呼び出す場合、この時点で self パラメータを明示的に渡す必要があることに注意してください。たとえば、次のようになります。これは、たとえば、親クラス名が変更されると、子クラスで多くの変更が行われることになります。また、Python は多重継承が可能な言語であるため、上記のメソッドを複数回記述する必要があります。多重継承があるので面倒です。これらの問題を解決するために、Python は super() メカニズムを導入しました。コード例は次のとおりです。 bar(self, message) メソッドの結果は一貫しています。実際、2 つのメソッドの内部処理メカニズムは大きく異なります。例を直接挙げてみましょう。 :
コード 1:
class FooParent: def bar(self, message): print(message) class FooChild(FooParent): def bar(self, message): FooParent.bar(self, message)
B から離れる
C を入力
Enter A
Leave A
Leave C
Leave A
Leave D
Leave E
実行順序はわかりやすい ということだけ。パブリックの親クラス A は複数回実行されます。コード 2:
>>> FooChild().bar("Hello, Python.") Hello, Python.
結果:
E を入力
B を入力
Aを入力
Aのまま
Dのまま
Leave C
Leave B