デジタルトレンドナビ
システム開発

2024.02.16

Pythonでスーパークラスの力を借りる! super() 関数を使ってみよう!

Pythonでスーパークラスの力を借りる! super() 関数を使ってみよう!

Pythonでオブジェクト指向プログラミングを行う際、スーパークラス(親クラス)のメソッドを呼び出すことはよくあります。その際に役立つのが、super() 関数です。

super() 関数は、現在のクラスとそのインスタンス(またはクラス)に対して、親クラスのメソッドへのアクセスを提供します。

この記事では、super() 関数の使い方を、初心者でもわかりやすく解説します。豊富な画像付きで丁寧に説明しているので、記事を読み終える頃には、あなたも super() 関数を使って、スーパークラスの力を自在に操れるようになるでしょう!

この記事でわかること

  • super() 関数の使い方
  • super() 関数のサンプルコード

super() 関数とは

super() 関数とは

Pythonのsuper()関数は、継承されたクラスのメソッドを呼び出すために使用されます。

これは、特に複数のクラスが継承チェーンにある場合に役立ちます。

super()は、親クラスのメソッドを直接呼び出すことなくアクセスするための効率的な方法を提供します。この関数を使用することで、サブクラスから親クラスのメソッドをオーバーライドしたり、拡張したりする際に、コードの重複を避けることができます。

また、super()は継承の階層を遡って正しいメソッドを見つけるので、プログラムのメンテナンス性と可読性が向上します。

Pythonのsuper()関数は、オブジェクト指向プログラミングの中核的な要素であり、多くの高度なプログラミングテクニックの基盤を形成しています。

super() 関数の使い方

super() 関数の使い方

super() 関数の使い方について解説します。準備するものは「Python 3.x」です。

super() 関数は、以下の形式で呼び出します。

super().method_name()
  • SubClass:サブクラス
  • self:サブクラスのインスタンス
  • method_name:スーパークラスのメソッド名

super() 関数のサンプルコード

super() 関数のサンプルコード

super() 関数を使って、スーパークラスのメソッドを呼び出す例を紹介します。

1. スーパークラスのメソッドをそのまま呼び出す

下記コードは、Animal クラスの speak() メソッドを Dog クラスでオーバーライドしています。

super().speak() を呼び出すことで、Animal クラスの speak() メソッドをそのまま実行することができます。

class Animal:
def speak(self):
raise NotImplementedError

class Dog(Animal):
def speak(self):
super().speak()
print(“Woof!”)

dog = Dog()
dog.speak()

2. スーパークラスのメソッドを拡張する

下記コードは、Animal クラスの speak() メソッドを Dog クラスと Cat クラスでオーバーライドしています。

super().speak() を呼び出すことで、Animal クラスの speak() メソッドを拡張することができます。

class Animal:
def speak(self):
raise NotImplementedError

class Dog(Animal):
def speak(self):
super().speak()
print(“Woof!”)

class Cat(Animal):
def speak(self):
super().speak()
print(“Meow!”)

dog = Dog()
dog.speak()

cat = Cat()
cat.speak()

まとめ

まとめ

Pythonのオブジェクト指向プログラミングにおける重要な機能であるsuper()関数の使用方法について詳しく解説しました。

super()関数は、サブクラスからスーパークラス(親クラス)のメソッドにアクセスする際に不可欠で、特に複数のクラスが継承関係にある場合に役立ちます。この関数を使用することで、親クラスのメソッドを直接呼び出すことなく、効率的にアクセスし、コードの重複を避け、プログラムのメンテナンス性と可読性を向上させることができます。

この記事で紹介した例を参考に、さまざまな場面で super() 関数を使ってみてください。

あなたも super() 関数を使ってPython オブジェクト指向プログラミングをもっと楽しみましょう!

投稿者

  • デジタルトレンドナビ編集部

    システム開発、Webサイト制作、ECサイトの構築・運用、デジタルトランスフォーメーション(DX)など、デジタルビジネスに関わる多岐の領域において、最新のトレンド情報や実践的なノウハウを発信してまいります。