記事ページを表示中

python|super関数の使い方について

記事No.90

更新日時2023年03月23日

super関数を使う

super関数は、親クラスのメソッドを呼び出す際に使用します。

#親クラスを定義
class Person:
    """人クラス"""
    def __init__(self, name, age):
        self.name = name
        self.age = age
 
    def introduce(self):
        print(f"私の名前は{self.name}です。{self.age}歳です。")
 
#子クラスを定義
class Singer(Person):
    """歌手クラス"""
    def sing(self):
        print("歌う")
    #親クラスのintroduceメソッドをオーバーライドしている
    def introduce(self):
        print(f"私は歌手です。")

#親クラスを実行
singer_one = Singer("佐藤", 20)
#親クラスのメソッドを実行
#super(子クラス名, インスタンス).メソッド名
super(Singer, singer_one).introduce()

#出力結果
私の名前は佐藤です。20歳です。

このコードの場合、子クラスのSingerがintroduceメソッドをオーバーライドしているので、親クラスのintroduceメソッドを呼び出したい場合は、super関数を使います。

コメントフォーム

クラス内でsuper関数を使う

super関数は、クラス内で使用する事もできます。

#親クラスを定義
class Person:
    """人クラス"""
    def __init__(self, name, age):
        self.name = name
        self.age = age
 
    def introduce(self):
        print(f"私の名前は{self.name}です。{self.age}歳です。")
 
#子クラスを定義
class Singer(Person):
    """歌手クラス"""
    def sing(self):
        print("歌う")

    def introduce(self):
        #親クラスのメソッドを呼び出す
        super().introduce()
        print("私は歌手です。")

singer_one = Singer("佐藤", 20)
singer_one.introduce()

#出力結果
私の名前は佐藤です。20歳です。
私は歌手です。

コメントフォーム

著者情報

名前:スカーレット
2010年からWEBサイトやWEBアプリを作成しています。最初は趣味でブログを書いていましたがSEOを勉強するのが楽しくなり、そのままブロガーとして独立しました。その後、記事を書くだけでは物足りなくなり自分でWEBアプリの作成をスタート。現在はブロガー兼プログラマーとして活動しています。このWEBアプリ(ブロトーク)もDjangoで自作しました。ブロトークはブログとSNSを合体させたようなWEBアプリです。ブログを読んで気づいた事や感想などあれば、気軽にメッセージを送って頂ければと思います。WEB技術を一緒に勉強していけたらと思います。