Python の super 関数
このチュートリアルでは、Python に組み込まれている super()
関数の目的と使用法について説明します。オブジェクト指向プログラミング(OOP)のコアコンセプトの 1つは継承です。継承では、1つのクラス(サブクラス)が親クラスまたはスーパークラスのプロパティとメソッドにアクセスできます。
多重継承では、クラスは複数のクラスからプロパティとメソッドを継承できます。つまり、クラスには複数のスーパークラスがあります。super()
関数は便利で、主に多重継承の場合に使用されます。このチュートリアルでは、コード例を使用した super()
関数の詳細と使用法について説明します。
Python で組み込み関数 super()
を使用する
super()
関数は、クラス内のオーバーライドされた継承メソッドにアクセスします。super()
関数は、次の親クラスまたはスーパークラスの関数にアクセスするために、多重継承を持つ子クラスで使用されます。super()
関数は、メソッド解決順序(MRO)を使用して次の親クラスを決定します。MRO が C -> D -> B -> A -> object
の場合と同様に、D
の場合、super()
関数は次の親クラスまたはスーパークラスメソッドを順番に検索します D -> B -> A -> object
。
クラスが単一の継承クラスである場合、その場合、super()
関数は、名前を明示的に使用せずに親クラスのメソッドを使用するのに役立ちます。
super(type)
関数は、入力 type
の親クラスまたは兄弟クラスのメソッドを呼び出すプロキシオブジェクトを返します。super()
の構文は Python 2 と 3 で異なり、Python 2 では super(type, self).mymethod(args)
、Python 3 では super().mymethod(args)
のように、継承されたメソッド mymethod()
を呼び出すために super()
関数を使用することができます。
それでは、super()
関数を使用して Python の子クラスから継承されたメソッドを呼び出す詳細なサンプルコードを見てみましょう。
コード例:
class mysuper_class(object):
def super_method(self):
print("Method of the super class was called!")
class myclass(mysuper_class):
def mymethod(self):
super().super_method()
a = myclass()
a.mymethod()
出力:
Method of the super class was called