継承とは前回のクラスに付随する機能だそうです。
前回はクラスを説明するのに家の設計図をもとに
家を建てていく例えでしたが、
今回はクラスの説明を車で例えていました。
車という基本設計
↓ ↓ ↓
トヨタ 日産 BMW
↓ ↓ ↓ ↓ ↓ ↓
車A 車B 車C 車D 車E 車F
図のようにトヨタという車メーカーは
車という概念、設計 を継承して自社の車を製造しています。
今回学習する継承とはこの親子関係のような概念だそうです。
まずは前回のクラスコードを元に進んでいきます。
このコードを元に継承をします。
このPersonを元にサイヤ人を作ります。
サイヤ人らしく、属性に戦闘力(strength)を追加します。
class Person:
#初期設定
def __init__ (self,name,nationality,age):
self.name = name
self.nationality = nationality
self.age = age
def __call__(self):
print('ここはcall関数です。')
def say_hello(self,name):
print('こんにちは、{}さん。私は{}です。'.format(name,self.name))
class Saiyan(Person):
def __init__ (self,name,nationality,age,strength):
#superは親クラス(ここではPerson)を指します。
#親の属性を呼び出して新たにstrengthを追加。
super(). __init__ (self,name,nationality,age)
self.strength = strength
これで人間を継承したサイヤ人のクラスを作成しました。
あとは悟空という個人(インスタンス)を作成します。
goku = Saiyan('悟空','惑星ベジータ',20,10000)
goku.name
悟空
悟空というインスタンスを作成できました。
Personを継承しているので、
def say_hello(self,name):
も実行することができます。
goku.say_hello('鈴木')
こんにちは、鈴木さん。私は悟空です。
コメント