Python クラスの継承の仕組みとサンプル

Pythonのクラスの継承の仕組みとサンプルです。

確認環境
・Python 3.7.0

目次

クラスの継承のイメージ

クラスがクラスを継承すると、継承先のクラスは継承元のクラスの機能を引き継ぎます。
継承先のクラスは、差分の機能を追加するだけでよくなります。

継承元のクラスのことを「基底クラス 」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とメソッドで親クラスのメソッドを実行します。

関連の記事

△上に戻る