Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのsuper()は多重継承でどのように機能しますか?

はじめに:多重継承の基本概念

super()の仕組みを理解する前に、まず多重継承(Multiple Inheritance)という概念を押さえておきましょう。

多重継承とは、1つの子クラスが複数の親クラスから属性やメソッドを継承できる仕組みのことです。Pythonでは、クラス定義時に複数のクラスをカンマ区切りで指定することで、簡単に多重継承を実現できます。

コード例:基本的な多重継承

次の例では、ChildクラスがFatherクラスとMotherクラスという2つの親クラスから、属性とメソッドを継承しています。

class Father:
    fathername = ""
    def father(self):
        print(self.fathername)

class Mother:
    mothername = ""
    def mother(self):
        print(self.mothername)

class Child(Father, Mother):
    def parent(self):
        print("Father :", self.fathername)
        print("Mother :", self.mothername)

s1 = Child()
s1.fathername = "Srinivas"
s1.mothername = "Anjali"
s1.parent()

実行結果

Father : Srinivas
Mother : Anjali

このように、Childクラスのインスタンスは、両方の親クラスが持つ属性(fathernamemothername)にそのままアクセスできることがわかります。

super()を使った多重継承

super()関数は、親クラスのメソッドを明示的に呼び出す代わりに使用できる便利な機能です。特に多重継承の場面では、どの親クラスのメソッドを呼び出すかを意識せずに済むため、コードの保守性が向上します。

コード例:super()との併用

class Father:
    fathername = ""
    def father(self):
        print(self.fathername)

class Mother:
    mothername = ""
    def mother(self):
        print(self.mothername)

class Child(Father, Mother):
    def parent(self):
        super().__init__()
        print("i am here")
        print("Father :", self.fathername)
        print("Mother :", self.mothername)

s1 = Child()
s1.fathername = "Srinivas"
s1.mothername = "Anjali"
s1.parent()

実行結果

i am here
Father : Srinivas
Mother : Anjali

プログラムを実行すると、上記のような出力が得られます。super().__init__()によって親クラスの初期化処理が呼び出された後、続く処理が正常に実行されていることが確認できます。

ポイントまとめ

  • 多重継承では、子クラスは複数の親クラスの属性・メソッドをすべて利用できます。
  • super()を使うと、親クラス名を直接書かずに親のメソッドを呼び出せます。
  • Python内部ではMRO(Method Resolution Order/メソッド解決順序)に従って、どの親クラスのメソッドを呼ぶかが自動的に決定されます。
  • super()を活用することで、クラス構造の変更にも強い柔軟なコードになります。
  1. PythonのBokehで画像を操作・表示する方法

    Pythonの可視化ライブラリBokehで画像を扱うには、image_url()メソッドを使い、画像URLのリストを渡すのが基本です。このメソッドを使うことで、ローカルやWeb上にある画像をプロット領域内に簡単に配置できます。実装の手順output_file()でデフォルトの出力先を設定し、show()を呼び出したときに結果がHTMLファイルとして保存されるようにします。figure()でプロット用の新しいFigure(図)オブジェクトを作成します。image_url()メソッドで、指定したURLから読み込んだ画像を描画します。show()を呼び出して、Bokehオブジェクトやアプリケーション

  2. Pythonにおけるアンダースコア(_)の意味と使い方をわかりやすく解説

    Pythonでは、アンダースコア(_)は特別な役割を持つ記号です。一見ただの文字に見えますが、実際にはインタープリタの動作や命名規則、数値リテラルの表記など、さまざまな場面で重要な働きをします。この記事では、Pythonでアンダースコアが使われる主な5つのケースを、コード例とともにわかりやすく解説します。1. インタープリタで直前の式の値を保持するPythonの対話モード(インタープリタ)では、直前に評価した式の結果が、特別な変数「_」に自動的に格納されます。計算結果をすぐに再利用したいときに非常に便利です。使用例>>> 12 + 10 22 >>> _ 2