LoginSignup
0
0

Pythonの基本②【クラスの継承】

Last updated at Posted at 2024-02-17

クラスの基本は

クラスの継承とは

一言で表すと

あるクラスをベースとして、追加したいメンバ変数や関数だけを追加し、新しいクラスを定義すること。

用語の整理

継承された元のクラスのことをスーパークラス、継承して新しく作ったクラスをサブクラスといいます。

使用例

実際にコードを見た方が早いと思うので、使用例を確認してみましょう!
以下の例では、動物についてのクラスanimalをベースに、Catクラスを作成しています。

# スーパークラス
class Animal():
	def __init__(self, type: str = None):
		self.type = type

    # 鳴くメソッド(デフォルトは"にゃー")
	def cry(self, sound: str = 'にゃー'):
		print(sound)

# サブクラス
class Cat(Animal):
	def __init__(self, name: str):
		super().__init__(type='cat')
		self.name = name
		print(f'{self.type}の名前は{name}です')

上記の例でのsuper().__init__(type='cat')は、Catクラスから見てスーパークラスであるAnimalクラスの__init__関数を呼び出している。

インスタンスを作成してみると

cat = Cat(name='tama')

Catクラスの__init__クラスが呼び出され、以下のように出力される。

catの名前はtamaです

Animalクラスを継承しているため、Animalクラスのメソッドであるcryメソッドも使用できる。

cat.cry() # 出力:にゃー

オーバーライド

オーバーライドとは、スーパークラスのメソッドを上書きすることです。
オーバーライドしたいメソッドをサブクラスでも同じメソッド名で定義することにより実現できます。

# スーパークラス
class Animal():
	def __init__(self, type: str = None):
		self.type = type

    # 鳴くメソッド(デフォルトは"にゃー")
	def cry(self, sound: str = 'にゃー'):
		print(sound)

# サブクラス
class Cat(Animal):
	def __init__(self, name: str):
		super().__init__(type='cat')
		self.name = name
		print(f'{self.type}の名前は{name}です')

	# 鳴くメソッド(オーバーライド)
	def cry(self, sound: str = 'にゃー'):
		print(sound * 2)

# インスタンス生成
cat = Cat(name='tama')
cat.cry() # にゃーにゃー

上記の例では、cryメソッドをオーバーライドしています。

まとめ

このブログでは、クラスの継承について簡単に説明させていただきました。参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0