環境設定 数値 文字列 正規表現 リスト タプル 集合 辞書 ループ 関数 クラス データクラス 時間 パス ファイル スクレイピング その他

Python の親クラスと子クラス:クラスの継承と super().__init__()

最終更新日 2023.02.18

クラスの継承とはなんでしょう?

class User:
    def __init__(self):
        self.id = 0
        self.name = 'Alice'


class Employee(User):
    def __init__(self):
        super().__init__()

        self.age = 28


a = User()
b = Employee()

print(a.__dict__)  # {'id': 0, 'name': 'Alice'}
print(b.__dict__)  # {'id': 0, 'name': 'Alice', 'age': 28}

Employee は User より具体的です。User は id と name しかありませんが、Employee はそれに加えて age をもちます。

User : 最低限の情報しかもたない
Employee : User より情報をもつ

実際 Employee のインスタンス b は User の a にはない age という変数をもっています。Python では User を親クラス、Employee を子クラスといいます。

子クラスの初期化は親クラスの初期化をともなう

子クラスの __init__super().__init__() を呼びます。

Employee のインスタンスは User のインスタンスでもあるため、Employee のインスタンスをつくったときに User の __init__ が働くようにします。