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

目次

確認環境:Python 3

クラスの継承とは

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

継承元のクラスのことを「基底クラス 」or 「親クラス 」or 「スーパークラス」といいます。
継承先のクラスのことを「派生クラス」 or「 子クラス」 or「 サブクラス」といいます。

継承の書き方

class  クラス名  (継承元のクラス名):
  • 継承先のクラスは、かっこの中に継承元のクラス名を記述します。
  • 継承元のクラス(親クラス)は、複数指定できます。多重継承が可能です。
  • 継承したクラスをさらに継承することもできます。

クラスの継承のサンプルです。

class Color1:
	def getName1(self):
		return "赤"

class Color2(Color1):
	def getName2(self):
		return "青"

c2 = Color2()

print(c2.getName1()) # 赤
print(c2.getName2()) # 青

1~3行目は、親クラスです。
5~7行目は、子クラスです。
5行目は、「Color2」の後に「(Color1)」と記述することにより、Color2は、Color1を継承しています。
11行目のgetName1メソッドは子クラスに存在しませんが実行できます。1行目の親クラスのメソッドを実行します。
→子クラスは、親クラスのメソッドを実装していませんが利用できます。継承の利点です。

多重継承のサンプル

多重継承のサンプルです。

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()) # 黄

9行目のクラスは、1行目と5行目のクラスを継承しています。多重継承です。
Pythonでは多重継承が可能です。
15,16行目は、継承元(親)のクラスのメソッドを実行しています。

親クラスのインスタンスを指定する(super)

親クラスのインスタンスを指定するサンプルです。

class Color1:
	def getName1(self):
		print ("赤")

class Color2(Color1):
	def getName2(self):
		super().getName1()

c2 = Color2()

c2.getName2() # 赤

7行目は、superで親クラスを指定してドット(.)の後に親クラスのメソッドを記述しています。
11行目は、子クラスの6行目のメソッドを実行し、7行目のsuperとメソッドで親クラスのメソッドを実行します。

関連の記事

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

△上に戻る