ホームページ > バックエンド開発 > Python チュートリアル > Python で子クラスから親クラスのメソッドを呼び出すにはどうすればよいですか?

Python で子クラスから親クラスのメソッドを呼び出すにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-03 14:14:16
オリジナル
789 人が閲覧しました

How Can I Call Parent Class Methods from Child Classes in Python?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート