カテゴリ: Python 更新日: 2026/03/12

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

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

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

生徒

「Pythonの“継承”って何ですか?親クラスとか子クラスってどういう意味なんですか?」

先生

「Pythonの継承は、あるクラスの特徴や機能を別のクラスに引き継ぐ仕組みのことだよ。親クラスは元になるクラスで、子クラスはそれを受け継ぐクラスなんだ。」

生徒

「なるほど…。でも実際にどうやって使うのか、ちゃんと理解したいです!」

先生

「それでは、Pythonの継承、親クラス・子クラスの関係、そしてメソッドオーバーライドの基本を一緒に学んでいこう!」

1. Pythonの継承(けいしょう)とは?初心者向けにわかりやすく解説

1. Pythonの継承(けいしょう)とは?初心者向けにわかりやすく解説
1. Pythonの継承(けいしょう)とは?初心者向けにわかりやすく解説

Python(パイソン)における継承(Inheritance)とは、すでにあるクラスで作った「機能」や「変数」を、別の新しいクラスにそのまま引き継ぐ仕組みのことです。プログラミング未経験の方でも、「設計図のコピー&カスタマイズ」と考えればイメージしやすいでしょう。

継承を利用する最大のメリットは、コードの再利用ができる点です。同じコードを何度も書く手間(DRY原則:Don't Repeat Yourself)を省き、効率的にプログラムを拡張できます。また、共通部分を親にまとめておくことで、後から修正が必要になった際も1箇所の変更で済むため、保守性が飛躍的に向上します。

身近な例でイメージ!
たとえば「動物」という大きな設計図(親クラス)があるとします。
  • 親クラス(動物): 「鳴く」「食べる」といった共通の動作を持つ。
  • 子クラス(犬): 親の動作を引き継ぎつつ、「ワンワンと鳴く」「お手をする」という個別の特徴を加える。
  • 子クラス(猫): 親の動作を引き継ぎつつ、「ニャーと鳴く」「爪を研ぐ」という個別の特徴を加える。

このように、「共通の基本機能」をベースに「特定の個性」を付け足していくのが継承の役割です。次のセクションでは、実際にどのようにPythonでコードを記述するのか、具体的な書き方を見ていきましょう。

2. 親クラスと子クラスの基本的な書き方

2. 親クラスと子クラスの基本的な書き方
2. 親クラスと子クラスの基本的な書き方

Pythonで「継承」を行うための記述は非常にシンプルです。新しく作成する子クラスの名前のすぐ後ろに、( )(カッコ)を付け、その中に元となる親クラスの名前を記述するだけで設定が完了します。

プログラミング未経験の方でもイメージしやすいように、動物の「鳴き声」を例にしたサンプルコードを見てみましょう。


# 親クラス(共通の土台となるクラス)
class Animal:
    def speak(self):
        print("何かの動物が鳴いています。")

# 子クラス(親クラスを継承したクラス)
class Dog(Animal):
    # 中身が空でも、親のspeak機能を引き継いでいる
    pass

# 実行してみる
shiba = Dog()
shiba.speak()  # 出力:何かの動物が鳴いています。

このコードでは、Animalが親クラス、Dogが子クラスです。子クラスであるDogの定義内には何も処理を書いていません(passと記述)が、親クラスを継承しているため、speakメソッドをそのまま自分のものとして使うことができます。

このように、「共通の機能は親に持たせ、それを子が自由に借りてくる」というのが、Pythonのクラス継承における最も基本的なルールです。これにより、同じコードを何度も書く手間が省け、プログラムの修正も一箇所で済むようになります。

3. 継承したクラスを使ってみよう

3. 継承したクラスを使ってみよう
3. 継承したクラスを使ってみよう

さきほどのクラスを使って、実際にオブジェクトを作ってみます。


dog = Dog()
dog.speak()

何かの動物が鳴いています。

Dogクラスは何も書かれていませんが、Animalクラスを継承しているので、speakメソッドをそのまま使えます。

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

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

メソッドオーバーライドとは、親クラスのメソッドを子クラスで上書きすることです。親クラスの動作を自分用にカスタマイズしたいときに使います。


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

dog = Dog()
dog.speak()

ワンワン!

このように、子クラスで同じ名前のメソッドを定義すれば、親のメソッドは無視されて、新しい動作になります。

5. 親クラスの機能を使いながら追加・変更する方法

5. 親クラスの機能を使いながら追加・変更する方法
5. 親クラスの機能を使いながら追加・変更する方法

子クラスで親クラスの機能を一部だけ使いたい場合は、super()を使います。これにより、親のメソッドを呼び出すことができます。


class Dog(Animal):
    def speak(self):
        super().speak()
        print("…でも実はワンワンって鳴くよ!")

dog = Dog()
dog.speak()

何かの動物が鳴いています。
…でも実はワンワンって鳴くよ!

super()を使うことで、親クラスの機能も生かしつつ、追加の処理ができます。

6. 継承のメリットと使いどころ

6. 継承のメリットと使いどころ
6. 継承のメリットと使いどころ

Pythonで継承を使うと、コードがすっきりして再利用性が高まります。次のような場面で活躍します。

  • 共通する機能をまとめておきたいとき
  • 似たようなクラスをたくさん作りたいとき
  • 機能の一部だけを変更して使いたいとき

たとえば、ゲームの中で「キャラクター」というクラスを作り、それを「戦士」や「魔法使い」などが継承すれば、共通する動きは親に、個別の技は子に書けます。

7. 実生活の例でイメージしよう:家電とスマート家電

7. 実生活の例でイメージしよう:家電とスマート家電
7. 実生活の例でイメージしよう:家電とスマート家電

「家電」を親クラスとすると、「スマート家電」は子クラスになります。

  • 親クラス:電源オン・オフ機能
  • 子クラス:Wi-Fi接続、スマホ操作など追加の機能

親クラスの基本機能を受け継ぎつつ、子クラスで便利な機能を追加できます。これがPythonにおける継承とオーバーライドの関係です。

8. 継承とオブジェクト指向の考え方を理解しよう

8. 継承とオブジェクト指向の考え方を理解しよう
8. 継承とオブジェクト指向の考え方を理解しよう

Pythonのオブジェクト指向プログラミングでは、継承はとても重要な考え方です。小さなパーツを組み合わせて、大きな仕組みを作るのに最適です。

継承を使うと、共通のコードを親に集約し、個別の機能は子で定義できるので、保守性も高まります。初心者のうちは難しく感じるかもしれませんが、考え方をしっかりつかめば、Pythonで効率的な開発ができるようになります。

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

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

関連記事:
カテゴリの一覧へ
新着記事
New1
Python
Pythonの例外チェーンを完全ガイド!初心者でもわかるfrom句を使ったエラーハンドリング
New2
PHP
PHPのCSVファイルの読み書きと文字列処理を基礎から解説!初心者向けガイド
New3
PHP
PHPのメモリ管理と変数の破棄方法をやさしく解説!初心者でもわかるunsetの使い方
New4
Python
Pythonのリトライ処理を完全ガイド!初心者でもわかるtry-except応用テクニック
人気記事
No.1
Java&Spring記事人気No1
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.2
Java&Spring記事人気No2
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
No.3
Java&Spring記事人気No3
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化
No.4
Java&Spring記事人気No4
PHP
PHPのデバッグ方法を完全ガイド!初心者でもわかるvar_dump・print_r・error_log
No.5
Java&Spring記事人気No5
PHP
PHPの特殊文字とエスケープ処理を完全ガイド!初心者向けにhtmlspecialcharsとhtmlentitiesをやさしく解説
No.6
Java&Spring記事人気No6
PHP
PHPのfor, while, do-whileループの使い方を完全ガイド!初心者でもわかる繰り返し処理
No.7
Java&Spring記事人気No7
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.8
Java&Spring記事人気No8
Python
Pythonの書き方を基本から解説!はじめてのPythonプログラム