Pythonにおけるsuper()の利用方法を現役エンジニアが解説【初心者向け】

初心者向けにPythonにおけるsuper()の利用方法について現役エンジニアが解説しています。superメソッドは、Pythonのクラスを継承したクラスが、継承元のメソッドを呼び出す際に使用します。Pythonでのsuperの使い方を確認して、実際に継承先のクラスで使ってみましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事が4,000以上あります。現役エンジニアの方はこちらをご覧ください。

Pythonにおけるsuper()の利用方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して、初心者向けに解説します。

 

Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Python講座の内容をもとに紹介しています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Pythonにおけるsuper()の利用方法について詳しく説明していくね!

大石ゆかり

お願いします!

 
この記事ではPythonにおけるsuper()の利用方法について解説します。
 

super()とは?

Pythonではあるクラス(子クラス)で別のクラス(親クラス)を継承できます。継承することで、親クラスのメソッドを子クラスから呼び出すことができます。

その際に使うのがsuper()です。
 

super()の使い方

super()は以下の形式で使うことができます。

super().親クラスのメソッド # python3系での標準の書き方
super(親クラスのオブジェクト, self).親クラスのメソッド # python2系での書き方

python2系での書き方のように、super()の引数として親クラスのオブジェクトとselfを持つ書き方が標準でしたが、3系になり省略する形が標準となりましたので注意しましょう。

super()を呼ぶことで親クラスのメソッドなどを呼び出すことができるようになります。
 

[PR] Pythonで挫折しない学習方法を動画で公開中

super()を利用して親クラスのメソッドを呼び出そう

では実際にsuper()を利用して親クラスのメソッドを呼び出してみましょう。
 

プログラムソースコード

class Person():
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_name(self):
        print("私の名前は" + self.name + "です。年齢は" + str(self.age) + "歳です。")


class JapanesePerson(Person):
    def __init__(self, name, age):
        super().__init__(name, age)

    def say_hello(self):
        print("こんにちは")


yamada = JapanesePerson("山田", 20)
yamada.say_name()
yamada.say_hello()

 

実行結果

私の名前は山田です。年齢は20歳です。
こんにちは

Personクラスにはコンストラクタとsay_nameメソッドを持っています。JapanesePersonクラスではPersonクラスを継承し、クラス内でコンストラクタとsya_helloメソッドを定義しています。

JapanesePersonクラスのコンストラクタの中でsuper()を使いPersonクラスのコンストラクタを呼び出しています。

JapanesePersonクラスでインスタンスを生成したらクラス内で定義しているsya_helloメソッドを呼び出せると共に親クラスのPersonクラスに定義しているsay_nameメソッドも呼び出すことができています。

 

監修してくれたメンター

メンターSさん

システムエンジニアとしてこれまで行政システムや医療用システムの保守、開発に携わりました。

JavaやPython、PHP、Kotlinなど様々な言語での開発経験があります。
TechAcademyではJavaコース、Pythonコース、AIコースなど7コースを担当しています。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間で、Pythonを使った人工知能(AI)や機械学習の基礎を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。