Pythonでスーパークラスを取得する方法:super()

super()を使ってスーパークラス(親クラス、基底クラス)を取得する方法について説明します。

Pythonでは、他のクラスベースのオブジェクト指向言語同様、クラス間に継承関係を持たせることができます。

super()を使うことで、サブクラスからスーパークラスの持つメソッドを利用することができます。

super()を使ってスーパークラスのメソッドを呼び出す

クラスが継承関係にある時、元となるクラスをスーパークラスと呼び、スーパークラスを継承したクラスをサブクラスと呼びます。

super()を使うと、サブクラスからスーパークラスを参照し、スーパークラスのメソッドを利用することができます。

次の例はSubClassのコンストラクタからSuperClassのコンストラクタを呼び出しています。

ここでは、サブクラスの__init__()メソッドからスーパークラスの__init__()メソッドを呼び出すことで、nameを初期化する処理をサブクラスから再利用しています。

super()を使う際は、第一引数に自クラスを、第二引数にはインスタンスを指定します。

なお、Python3.x系では、super()の引数は省略することができます。

super()を使う上での注意点

super()を使わずに、「スーパークラス名.メソッド名」でスーパークラスのメソッドを呼び出すこともできます。

しかし、スーパークラスのメソッドはsuper()を使って呼び出すことが推奨されています。

次のサンプルプログラムを見てみましょう。

実行結果

サブクラスからスーパークラスのsayHello()メソッドを呼び出しています。

この時、super(SubClass, self).sayHello()は一見SuperClass.sayHello(self)に書き換えられるように見えます。

ただし、この記法は(特に多重継承を用いている場合は)推奨されません。スーパークラスのメソッドはsuper()を使って呼び出すようにしましょう。


Welcome to UX MILK

UX MILKはより良いサービスやプロダクトを作りたい人のためのメディアです。

このサイトについて