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__
が働くようにします。