サブクラスの機能をカスタマイズする
継承の強みは、既存コードを書き直さずに再利用・カスタマイズできる点にあります。子クラスの中から親クラスのメソッドを呼び出すことで、それらのメソッド内のコードをすべて再利用でき、コードを簡潔で扱いやすくできます。
この演習では、Employee クラスを継承した Manager クラスを引き続き扱います。Employee のコンストラクタを土台にしつつ、マネージャーが担当しているプロジェクトを指定できる追加の引数を受け取るコンストラクタを追加します。
簡略化した Employee クラスと、以前に作成した Manager クラスの冒頭部分を、script.py に用意してあります。
この演習はコースの一部です
Pythonによるオブジェクト指向プログラミング入門
演習の手順
Managerにコンストラクタを追加し、name、salary(既定値は50000)、project(既定値はNone)を受け取るようにします。Managerのコンストラクタ内で、親クラスEmployeeのコンストラクタを呼び出し、親クラスのコンストラクタで定義された3つの引数を渡します。selfを使って、対応する属性に引数projectを代入します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
class Employee:
def __init__(self, name, salary=30000):
self.name = name
self.salary = salary
def give_raise(self, amount):
self.salary += amount
class Manager(Employee):
# Add a constructor
def __init__(self, name, ____=____, ____=____):
# Call the parent's constructor
____.____(____, ____, salary)
# Assign project attribute
____.____ = ____
def display(self):
print("Manager ", self.name)