記事ページを表示中

python|クラスの継承について

記事No.89

更新日時2023年03月23日

クラスを継承する方法について解説します。

class Singer:
    """歌手クラス"""
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def introduce(self):
        print(f"私の名前は{self.name}です。{self.age}歳です。")

    def sing(self):
        print("歌う")

class Dancer:
    """ダンサークラス"""
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def introduce(self):
        print(f"私の名前は{self.name}です。{self.age}歳です。")

    def dance(self):
        print("踊る")

ここに書いたコードには、Singerクラスと、Dancerクラスが定義されています。

2つのクラスを見比べると、__init__メソッドと、introduceメソッドが共通しているのが分かります。

これは、プログラミングにおけるDRY(Don't repeat yourself)の原則に反しています。

DRYの原則に従い重複しているコードを減らす事で、コードの可読性、保守性が高くなります。

ここで解説する、クラスの継承を行う事で、コードの重複を防ぐ事ができます。

#Personクラスを作成しSingerクラスとDancerクラスの共通メソッドを定義する
class Person:
    """人クラス"""
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def introduce(self):
        print(f"私の名前は{self.name}です。{self.age}歳です。")

#Personクラスを継承する
class Singer(Person):
    """歌手クラス"""
    def sing(self):
        print("歌う")

#Personクラスを継承する 
class Dancer:
    """ダンサークラス"""
    def dance(self):
        print("踊る")

この様に、各クラスで共通するメソッドをまとめ、継承する事ができます。

コメントフォーム

著者情報

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