Python で子クラスから親クラスのメソッドを呼び出す
オブジェクト階層を設計する場合、多くの場合、オブジェクト階層内の親クラスからメソッドを呼び出すことが必要になります。派生クラス。 Perl や Java などの言語では、「super」キーワードを使用するとこれが容易になります。ただし、Python では、アプローチが異なるようです。
明示的な親クラスの参照
Python では、親クラスに明示的に名前を付けることが唯一の方法であるようです。子からそのメソッドを呼び出します。たとえば、親クラス Foo にメソッド frotz が含まれている場合、子クラス Bar はそれを Foo::frotz() として参照する必要があります。
制限事項と懸念事項
このアプローチは、継承されたメソッドを定義したクラスを子供たちが必ずしも知っているとは限らない複雑な階層において課題を引き起こす可能性があります。これにより、メンテナンスと読みやすさの問題が発生する可能性があります。
Super() 関数
幸いなことに、Python 2.2 以降では、この制限を克服するために super() 関数が導入されました。 super() を使用すると、親クラスのメソッドに直接アクセスできます。以下に例を示します。
class Foo: def frotz(self): return "Baz" class Bar(Foo): def frotz(self): # Call the parent class's frotz method using super() return super().frotz() + " Quux"
super().frotz() を呼び出すと、子クラス Bar は親クラス Foo の frotz メソッドにアクセスできます。
新しいスタイルクラス
3.0 より前の Python バージョンの場合、明示的に使用をオプトインする必要があります。新しいスタイルのクラス。この場合、構文は少し異なります:
class Foo(Bar): def baz(self, arg): return super(Foo, self).baz(arg)
これらの古いバージョンでは、 super は 2 つの引数を取ります: 子クラス名 (例: Foo) とインスタンス オブジェクト (例: self)。
以上がPython で子クラスから親クラスのメソッドを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。