Pythonの継承(Inheritance)とは?親クラスから機能を受け継ぐしくみを解説
継承(Inheritance)とは、あるクラス(親クラス)の機能や性質を、別のクラス(子クラス)が引き継いで使えるようにする仕組みです。
Pythonでは、コードの再利用性を高め、効率よくプログラムを設計するために使われます。
継承の基本構文
class 親クラス名:
# 共通の属性やメソッド
class 子クラス名(親クラス名):
# 追加や変更の内容
例:Animalクラスを継承したDogクラス
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
print(f"{self.name}が鳴きました。")
class Dog(Animal):
def bark(self):
print(f"{self.name}がワンと鳴いた!")
子クラスのインスタンスを使う
d = Dog("ポチ")
d.speak() # → ポチが鳴きました。
d.bark() # → ポチがワンと鳴いた!
Dog
クラスは Animal
クラスの機能をそのまま使うことができます。
コンストラクタの継承と super()
子クラスで __init__()
を独自に定義したいときは、super()
を使って親の初期化処理を呼び出すのが一般的です。
class Cat(Animal):
def __init__(self, name, color):
super().__init__(name)
self.color = color
super()
により、親クラスのコンストラクタが適切に実行されるようになります。
メソッドのオーバーライド(上書き)
親クラスと同じ名前のメソッドを子クラスで定義すると、そのメソッドを上書き(オーバーライド)できます。
class Bird(Animal):
def speak(self):
print(f"{self.name}がチュンチュン鳴いた!")
b = Bird("すずめ")
b.speak() # → すずめがチュンチュン鳴いた!
継承のメリット
- 共通の機能をまとめて管理できる
- コードの重複を減らせる
- 修正や拡張がしやすくなる
多重継承(必要なときだけ)
class A:
pass
class B:
pass
class C(A, B):
pass
Pythonでは複数の親クラスを継承することも可能ですが、使いすぎには注意が必要です。
まとめ
Pythonの継承(Inheritance)は、クラスの共通機能を引き継ぎながら、新しい機能を追加したり、必要に応じて変更したりするための仕組みです。
super()
を使った初期化や、オーバーライドによる柔軟な振る舞いの変更にも対応できます。
まずは基本的な親子関係を作ってみて、クラスの再利用性や拡張性の高さを体感してみましょう!