カテゴリ: Python 更新日: 2026/02/23

Pythonの継承とは?親クラス・子クラスの関係とメソッドオーバーライドをやさしく解説

Pythonの継承とは?親クラス・子クラスの関係とメソッドオーバーライド
Pythonの継承とは?親クラス・子クラスの関係とメソッドオーバーライド

先生と生徒の会話形式で理解しよう

生徒

「Pythonで同じようなクラスを何個も作ると大変なんですが、楽に書く方法はありますか?」

先生

「そのときに役立つのが、Pythonの継承という考え方です。共通部分をまとめて管理できます。」

生徒

「親クラスとか子クラスって聞いたことはありますが、正直よくわかりません…」

先生

「では、身近なたとえを使いながら、Pythonの継承とメソッドオーバーライドを順番に見ていきましょう。」

1. Pythonの継承とは何か?

1. Pythonの継承とは何か?
1. Pythonの継承とは何か?

Pythonの継承とは、すでにあるクラスの機能を引き継いで、新しいクラスを作る仕組みです。元になるクラスを親クラス、引き継いで作られるクラスを子クラスと呼びます。

たとえば「動物」という共通の特徴を持つものがあり、その中に「犬」や「猫」がある、というイメージです。鳴く、食べるといった共通の動作は親クラスにまとめることで、同じコードを何度も書かずにすみます。

2. 親クラスと子クラスの基本的な関係

2. 親クラスと子クラスの基本的な関係
2. 親クラスと子クラスの基本的な関係

親クラスは「共通ルールや基本機能」を持ち、子クラスはそれを受け継ぎつつ、自分専用の機能を追加できます。Pythonではクラス名の後ろに丸かっこを書いて親クラスを指定します。


class Animal:
    def speak(self):
        print("なにかの鳴き声")

class Dog(Animal):
    pass

この例では、DogクラスはAnimalクラスを継承しています。Dogクラスには何も書いていませんが、Animalクラスのspeakメソッドを使うことができます。

3. 継承すると何が便利なのか

3. 継承すると何が便利なのか
3. 継承すると何が便利なのか

継承の最大のメリットは、コードの再利用です。同じ処理を何度も書かなくてよくなり、修正も一か所で済みます。プログラムが長くなっても、管理しやすくなります。

また、共通のルールを親クラスにまとめることで、プログラム全体の構造が整理され、読みやすくなるという利点もあります。

4. 子クラスでメソッドをそのまま使う例

4. 子クラスでメソッドをそのまま使う例
4. 子クラスでメソッドをそのまま使う例

子クラスは、親クラスのメソッドをそのまま使えます。実際に呼び出してみましょう。


dog = Dog()
dog.speak()

なにかの鳴き声

Dogクラスにはspeakメソッドを書いていませんが、親クラスの処理がそのまま実行されています。

5. メソッドオーバーライドとは

5. メソッドオーバーライドとは
5. メソッドオーバーライドとは

メソッドオーバーライドとは、親クラスにあるメソッドを、子クラス側で上書きすることです。同じ名前のメソッドを子クラスで定義すると、子クラスの処理が優先されます。

犬なら犬らしい鳴き声にしたい、という場合に使います。


class Dog(Animal):
    def speak(self):
        print("ワンワン")

6. オーバーライドしたメソッドの動き

6. オーバーライドしたメソッドの動き
6. オーバーライドしたメソッドの動き

同じようにspeakメソッドを呼び出してみます。


dog = Dog()
dog.speak()

ワンワン

このように、親クラスの処理ではなく、子クラスで定義した内容が実行されます。これがメソッドオーバーライドです。

7. 親クラスの処理も使いたい場合

7. 親クラスの処理も使いたい場合
7. 親クラスの処理も使いたい場合

子クラスで処理を追加しつつ、親クラスの内容も使いたいことがあります。そのときはsuper()を使います。super()は「親クラスのメソッドを呼び出すための仕組み」です。


class Dog(Animal):
    def speak(self):
        super().speak()
        print("ワンワン")

これにより、親クラスの処理のあとに、子クラス独自の動作を追加できます。

8. 初心者がつまずきやすいポイント

8. 初心者がつまずきやすいポイント
8. 初心者がつまずきやすいポイント

継承でよくある間違いは、「どのクラスのメソッドが呼ばれているのかわからなくなる」ことです。クラスの関係を紙に書いたり、親と子の役割をはっきり意識すると理解しやすくなります。

また、何でも継承で解決しようとせず、「共通部分だけを親クラスにまとめる」という考え方を大切にすると、読みやすいPythonプログラムになります。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
Python のオブジェクト指向の記事一覧へ
新着記事
New1
Python
Pythonの整数と浮動小数点数の違いとは?数値型の基本を解説
New2
Python
Pythonで文字列をリストに変換する方法!split()とjoin()の使い方
New3
Python
Pythonのbreakとcontinueの違いとは?ループの制御方法をマスター
New4
Python
Pythonのstartswith()・endswith()の使い方!文字列の前後をチェック
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPの特殊文字とエスケープ処理を完全ガイド!初心者向けにhtmlspecialcharsとhtmlentitiesをやさしく解説
No.2
Java&Spring記事人気No2
PHP
PHP の文字列のフォーマット(sprintf, printf)
No.3
Java&Spring記事人気No3
Python
Pythonで文字列を置換する方法!replace()の使い方と正規表現の活用
No.4
Java&Spring記事人気No4
Python
Pythonのクロージャー(Closure)とは?関数内関数とnonlocalの活用
No.5
Java&Spring記事人気No5
Python
Pythonでリストを分割する方法(スライス / split() / itertools)
No.6
Java&Spring記事人気No6
Python
Pythonで経過時間を測る方法をやさしく解説!初心者向けtime.perf_counterとtime.sleepの使い方
No.7
Java&Spring記事人気No7
Python
Pythonのstartswith()・endswith()の使い方!文字列の前後をチェック
No.8
Java&Spring記事人気No8
Python
PythonのSeabornで美しいデータ可視化を実現する方法!初心者でもわかるグラフ作成入門