【Pythonを使い倒す】既存のクラスを継承して好きなようにカスタマイズできるようには?

前回の記事では、クラス変数とクラスメソッドの解説とクラス変数とインスタンス変数の組み合わせて機能的なコードの書き方について解説をしました。今回はクラスの継承を解説します。

クラスの継承

クラスを引き継いで新たなクラスを作ることができます。
以下の例ではクラスDog内にクラス変数とメソッドが定義されています。

クラス内で変数とメソッドを定義
class Dog:
    color = "brown"
    
    def bark(self):
        print("Bow-wow!")
        
dog = Dog()
print(dog.color)
dog.bark()
実行結果

brown
Bow-wow!

クラス変数color と bark()という名前のメソッドがありますね。
クラスDogからインスタンスを生成しcolorの値をプリントして、bark()メソッドを呼び出しています。

上記のように、上記の実行結果のように、colorは”brown”と表示されました。
そして、bark()メソッドが実行されて”Bow-wow!”とプリントされました。

クラスを継承する新たなクラスを記述

このDogクラスを継承する新たなクラスを記述しましょう。
継承すると、継承元の変数やメソッドがそのまま使えるだけではなく、新たに追加することもできます。
継承元のクラスは、新たなクラス名の直後の( )内に記述します。

こちらのセルを見ていきましょう。

クラスを継承する新たなクラスを記述
class Shibainu(Dog): # ()内に継承元のクラス
    name = "Pochi" # 新たにクラス変数を追加
    
    def sayName(self): # 新たにメソッドを追加
        print("I'm " + self.name + ".")
        
shiba = Shibainu()

print(shiba.color) # 継承元の変数
shiba.bark() # 継承元のメソッド

print(shiba.name) # 新たな変数
shiba.sayName() # 新たなメソッド
実行結果

brown
Bow-wow!
Pochi
I’m Pochi.

クラスShibainuの後に括弧()があって、その中に継承元のクラスが書いてあります。
このクラスShibainuには新たにnameというクラス変数と、sayName()というメソッドが追加されています。
sayName()メソッドは名前をプリントします。
クラスShibainuのインスタンスを生成しshibaという変数に入れます。
そして継承元の変数をプリントし、継承元のメソッドを呼び出します。
そして新たに追加した変数と新たなメソッドを呼び出します。

実行すると上記のように継承元の変数がプリントされ継承元のメソッドが呼び出されたことが確認できます。
そして新たな変数が表示されて新たなメソッドが呼び出されました。

このように継承により、ベースとなるクラスから様々なクラスを派生させることができます
それではクラスの継承を実装する手順を以下にまとめておきます。

  1. クラスを1つ好きなように記述してみよう
  2. 上記のクラスを継承したクラスを記述し、クラス変数やメソッドを新たに追加してみよう
  3. 変数やメソッドが継承されていることを確認しよう

継承はオブジェクト指向の特徴の1つですのでコードを書いて慣れておきましょう。
今回はクラスの継承を解説しました。
継承を学んだことで既存のクラスを継承して好きなようにカスタマイズできるようになりました。