始める無料で始める

サブクラスの機能をカスタマイズする

継承の強みは、既存コードを書き直さずに再利用・カスタマイズできる点にあります。子クラスの中から親クラスのメソッドを呼び出すことで、それらのメソッド内のコードをすべて再利用でき、コードを簡潔で扱いやすくできます。

この演習では、Employee クラスを継承した Manager クラスを引き続き扱います。Employee のコンストラクタを土台にしつつ、マネージャーが担当しているプロジェクトを指定できる追加の引数を受け取るコンストラクタを追加します。

簡略化した Employee クラスと、以前に作成した Manager クラスの冒頭部分を、script.py に用意してあります。

この演習はコースの一部です

Pythonによるオブジェクト指向プログラミング入門

コースを見る

演習の手順

  • Manager にコンストラクタを追加し、namesalary(既定値は 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)
コードを編集して実行