クラスの継承・オーバーライド
継承
あるクラス(=親クラス)を元に新しいクラス(=子クラス)をつくることを「継承」と言います。
継承することで効率的にプログラムを書くことができます。
sub.py
class Parent:
def __init__(self, age):
self.age = age
def info(self, age):
result = '彼の年齢は' + str(self.age)
return result
main.py
from sub import Parent
class Child(Parent): # class 子クラス名(親クラス名):
def school(self): # 子クラスだけのメソッドを追加できる
-- 処理 --
child1 = Child('john', 12)
print( child1.info() ) # 子クラスではinfoメソッドを定義してないけど、親クラスで定義しているから使える
print( child1.school() ) # 子クラスだけのメソッドも当然使える
オーバーライド
親クラスにあるメソッドと同じ名前のメソッドを定義することで「メソッドの上書き(オーバーライド)」ができます。
sub.py
class Parent:
def __init__(self, age):
self.age = age
def info(self, age):
result = '彼の年齢は' + str(self.age)
return result
main.py
from sub import Parent
class Child(Parent):
def __init__(self, age, school):
super().__init__(age)
self.school = school
def info(self): # 親クラスのinfoメソッドを上書きする
return 'no infomation'
child1 = Child('john', 12, 'xxx highschool')
__init__をオーバーライドするときは、親クラスと全く同じ部分はsuper()を使って省略できます
super().__init__(age)と書くことで、self.age = age と書いたことと同じになります。
BACK