Pythonのクラスの継承の仕組みとサンプルです。
確認環境 ・Python 3.7.0 |
目次
仕組み | クラスの継承とは |
継承の書き方 | |
多重継承のサンプル | |
親クラスのインスタンスを指定する(super) |
クラスの継承とは
クラスがクラスを継承すると、継承先のクラスは継承元のクラスの機能を引き継ぎます。
継承先のクラスは、差分の機能を追加するだけでよくなります。
継承元のクラスのことを「基底クラス 」or 「親クラス 」or 「スーパークラス」といいます。
継承先のクラスのことを「派生クラス」 or「 子クラス」 or「 サブクラス」といいます。
継承の書き方
class クラス名 (継承元のクラス名): |
- 継承先のクラスは、かっこの中に継承元のクラス名を記述します。
- 継承元のクラス(親クラス)は、複数指定できます。多重継承が可能です。
- 継承したクラスをさらに継承することもできます。
- 以下は、Pythonの公式ドキュメントのクラスの継承のリンクです。
https://docs.python.org/ja/3/tutorial/classes.html#inheritance
クラスの継承のサンプルです。
# coding: utf-8
class Color1:
def getName1(self):
return "赤"
class Color2(Color1):
def getName2(self):
return "青"
c2 = Color2()
print(c2.getName1()) # 赤
print(c2.getName2()) # 青
3~5行目は、親クラスです。
7~9行目は、子クラスです。
7行目は、「Color2」の後に「(Color1)」と記述することにより、Color2は、Color1を継承しています。
13行目のgetName1メソッドは子クラスに存在しませんが実行できます。4行目の親クラスのメソッドを実行します。
→子クラスは、親クラスのメソッドを実装していませんが利用できます。継承の利点です。
多重継承のサンプル
多重継承のサンプルです。
# coding: utf-8
class Color1:
def getName1(self):
return "赤"
class Color2:
def getName2(self):
return "青"
class Color3(Color1,Color2):
def getName3(self):
return "黄"
c3 = Color3()
print(c3.getName1()) # 赤
print(c3.getName2()) # 青
print(c3.getName3()) # 黄
11行目のクラスは、3行目と7行目のクラスを継承しています。多重継承です。
Pythonでは多重継承が可能です。
17,18行目は、継承元(親)のクラスのメソッドを実行しています。
親クラスのインスタンスを指定する(super)
親クラスのインスタンスを指定するサンプルです。
# coding: utf-8
class Color1:
def getName1(self):
print ("赤")
class Color2(Color1):
def getName2(self):
super().getName1()
c2 = Color2()
c2.getName2() # 赤
9行目は、superで親クラスを指定してドット(.)の後に親クラスのメソッドを記述しています。
13行目は、子クラスの8行目のメソッドを実行し、9行目のsuperとメソッドで親クラスのメソッドを実行します。
関連の記事