カテゴリ: Python 更新日: 2026/01/22

Pythonの抽象クラスとは?ABCモジュールを使った設計の基本を初心者向けに解説

Pythonの抽象クラスとは?ABCモジュールを使った設計の基本
Pythonの抽象クラスとは?ABCモジュールを使った設計の基本

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

生徒

「Pythonのオブジェクト指向で、抽象クラスって出てきたんですが、クラスと何が違うんですか?」

先生

「抽象クラスは、完成した設計図ではなく、これから作るクラスのルールを決めるための設計図です。」

生徒

「ルールだけ決めるクラスなんて、使い道があるんですか?」

先生

「あります。むしろ、大きなプログラムほど重要になります。身近なたとえで説明しますね。」

1. 抽象クラスとは何か?

1. 抽象クラスとは何か?
1. 抽象クラスとは何か?

Pythonの抽象クラスとは、そのままでは使えない、クラスのひな形です。 普通のクラスは、そのままオブジェクトを作って使えますが、 抽象クラスは直接使うことを目的としていません。

抽象クラスの役割は、 「このクラスを継承するなら、最低限これらの機能は必ず作ってください」 という約束事を決めることです。

例えば、家を建てるときの設計図を想像してください。 「玄関がある」「部屋がある」「屋根がある」 というルールだけ決めた設計図が抽象クラスです。 実際の家の細かい形は、それを元に作られます。

2. なぜ抽象クラスが必要なのか

2. なぜ抽象クラスが必要なのか
2. なぜ抽象クラスが必要なのか

抽象クラスを使う最大の理由は、 プログラムの形をそろえるためです。

人が何人もで開発すると、 クラスごとに作り方がバラバラになりがちです。 抽象クラスを使えば、 「このメソッドは必ず作る」 という共通ルールを強制できます。

その結果、コードが読みやすくなり、 後から修正するときも迷いにくくなります。 Pythonのオブジェクト指向プログラミングでは、 安定した設計を作るための土台として使われます。

3. Pythonで抽象クラスを作るABCモジュール

3. Pythonで抽象クラスを作るABCモジュール
3. Pythonで抽象クラスを作るABCモジュール

Pythonでは、抽象クラスを作るために abcモジュールを使います。 ABCは「Abstract Base Class」の略で、 日本語では「抽象基底クラス」と呼ばれます。

このモジュールを使うことで、 抽象クラスと抽象メソッドを定義できます。 抽象メソッドとは、 中身を持たない、名前だけのメソッドです。

4. 抽象クラスの基本的な書き方

4. 抽象クラスの基本的な書き方
4. 抽象クラスの基本的な書き方

まずは、動物を例に考えてみましょう。 どんな動物でも「鳴く」という動作はありますが、 鳴き声は動物ごとに違います。


from abc import ABC, abstractmethod

class Animal(ABC):
    @abstractmethod
    def speak(self):
        pass

このAnimalクラスが抽象クラスです。 speakメソッドは抽象メソッドで、 中身は書かれていません。 これは「必ず作ってください」という宣言です。

5. 抽象クラスを継承した子クラス

5. 抽象クラスを継承した子クラス
5. 抽象クラスを継承した子クラス

抽象クラスは、そのままでは使えません。 必ず継承して、未完成の部分を完成させます。


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

class Cat(Animal):
    def speak(self):
        print("ニャーニャー")

ワンワン
ニャーニャー

それぞれのクラスで、 抽象メソッドだったspeakを実装しています。 このように、抽象クラスが「型」を決め、 子クラスが「中身」を作ります。

6. 抽象クラスを使うと何が嬉しいのか

6. 抽象クラスを使うと何が嬉しいのか
6. 抽象クラスを使うと何が嬉しいのか

抽象クラスを使うことで、 必要なメソッドの書き忘れを防げます。 もし抽象メソッドを実装しなければ、 Pythonはエラーを出して教えてくれます。

これは初心者にとっても大きな助けになります。 「何を作ればいいのか」が明確になり、 設計通りにコードを書きやすくなります。

7. 抽象クラスは設計を守るための道具

7. 抽象クラスは設計を守るための道具
7. 抽象クラスは設計を守るための道具

抽象クラスは、処理を増やすためのものではありません。 プログラム全体の形を整え、 将来の変更に強い構造を作るための道具です。

Pythonのオブジェクト指向プログラミングでは、 クラスが増えるほど設計の重要性が高まります。 抽象クラスとABCモジュールを理解しておくことで、 安定したコードを書けるようになります。

最初は難しく感じるかもしれませんが、 「ルールを決めるクラス」という意識で見ると、 抽象クラスの役割が自然と見えてきます。

カテゴリの一覧へ
新着記事
New1
Python
Pythonのセットと辞書のキーの関係を理解しよう!初心者でもわかる基本解説
New2
Python
Pythonのセットに複数の要素をまとめて追加する方法(update()の使い方)を初心者向けに解説!
New3
Django
Djangoのurls.pyをアプリごとに分割する方法を初心者向けに徹底解説
New4
Flask
Flaskで静的ファイルをキャッシュ設定!ページ読み込みを高速化する完全ガイド
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonでトランザクション処理を実装する方法を完全解説!commit・rollbackで安全なSQL操作
No.2
Java&Spring記事人気No2
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.3
Java&Spring記事人気No3
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.4
Java&Spring記事人気No4
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.5
Java&Spring記事人気No5
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
No.6
Java&Spring記事人気No6
Flask
FlaskでAPIを作る基本!初心者向けに仕組みと特徴をやさしく解説
No.7
Java&Spring記事人気No7
Flask
Flask‑RESTfulでREST APIを構築する手順まとめ!初心者向けにやさしく解説
No.8
Java&Spring記事人気No8
Python
Pythonのコーディング規約(PEP8)とは?初心者でもわかる書き方の基本ルール