いっかくのデータサイエンティストをいく

1からプログラミングとデータサイエンスを独習したい

【備忘録】継承(Python)

今回はこの本のP149~P157 をもとに書いています。

継承とは

継承とは、あるクラスAからクラスBへクラスAで定義した変数やメソッド(def ~のやつ)を受け継がせることです。 継承元を親クラス、継承先を子クラスといいます。AとBには「この2つには親子関係がある」といいます。

継承の書式

継承関係を描くためには子になるクラスの書き方が通常のクラスの書き方と異なります。

class クラス名(親クラス名):
     変数
     def メソッド名:
           メソッドの処理

ちなみに基本的には親クラス内のメソッドは子クラスにすべて呼び出されます(例外あり)。

継承を使ったプログラム(基本)

まずはコードを描いてみます。

#親クラス
class animalBaseClass:
    animallegs = 4
    def walk(self):
        print('あるく')
    def cry(self):
        print('なく')
    def getLegsNum(self):
        print(self.animallegs)

#親クラスだけでも動く
cat = animalBaseClass()
cat.animallegs
#4
cat.walk()
#あるく
 
#子クラス      
class dogClass(animalBaseClass):
    def __init__(self):
        print('いぬです')
    def cry(self):
        print('わんわん')

wanko = dogClass()
#いぬです
wanko.walk()
#あるく
wanko.cry()
#わんわん(子クラスが優先)
wanko.getLegsNum()
#4

子クラスのdogClassには、初期メソッドであるinitのみ書き、インスタンス化する際に「いぬです」と自己紹介されるようになっています。 なお、def cry(cryメソッド)は親クラスにも子クラスにもありますが、子クラスが優先されます。