✨
Python100本ノック#5 Pythonの継承(inheritance)
継承とは
既存のクラスをもとに、新しいクラスを作成することを「継承」と言う。
既存クラスを継承して作成したクラスを「派生クラス」と言う。
継承元となるクラスを「親クラス」や「スーパークラス」、「基底クラス」などと呼ぶ。
継承先のクラスは「子クラス」「サブクラス」、「派生クラス」と呼ぶ。
継承の基本文法
class B(object):
pass
clss A(B):
pass
a = A()
具体例
Personクラスを継承するTeacherとStudentクラス
class Person(object):
def eat(self):
print('i can eat food!')
def speak(self):
print('i can speak!')
class Teacher(Person):
pass
class Student(Person):
pass
teacher = Teacher()
teacher.eat()
teacher.speak()
student = Student()
student.eat()
studnet.speak()
output
i can eat food!
i can speak!
i can eat food!
i can speak!
単一継承
継承先が1だけの場合は、単一継承と言う。
基本文法
# 1、親クラス
class Person(object):
pass
# 2、子クラス
class Teacher(Person):
pass
具体例
自動車を継承するガソリン車とEV車
# 1、自動車クラス
class Car(object):
def run(self):
print('i can run')
# 2、ガソリン車クラス
class GasolineCar(Car):
pass
# 3、EV車
class EletricCar(Car):
pass
bwm = GasolineCar()
bwm.run()
tesla = EletricCar()
tesla.run()
output
i can run
i can run
多段階継承
Aを継承するB、Bを継承するCの場合は、CはAを継承することになる。
例
class C(object):
def func(self):
print('Cクラスのfunc')
class B(C):
pass
class A(B):
pass
a = A()
a.func()
output
Cクラスのfunc
多重継承
同時に複数のクラスを継承することを「多重継承」と言う。
チーム開発では属性とメソッドの重複が発生しやすいため、多重継承を利用しないほうがよいらしい。
基本文法
class B(object):
pass
class C(object):
pass
class A(B, C):
pass
a = A()
具体例
class GasolineCar(object):
def run_with_gasoline(self):
print('i can run with gasoline')
class EletricCar(object):
def run_with_eletric(self):
print('i can run with eletric')
class HybridCar(GasolineCar, EletricCar):
pass
toyota = HybridCar()
toyota.run_with_gasoline()
toyota.run_with_eletric()
output
i can run with gasoline
i can run with eletric
Discussion