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

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

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

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

生徒

「Pythonでクラスを作るときに、必ず作らないといけないメソッドを決めることってできますか?」

先生

「できます。Python(パイソン)では、抽象クラス(チュウショウクラス)という仕組みを使うと、必ず実装してほしいメソッドを決められます。」

生徒

「それはどうやって作るんですか?」

先生

「ABCモジュールを使います。では、基本から順番に見ていきましょう。」

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

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

抽象クラス(チュウショウクラス)とは、「設計図だけを持ったクラス」です。実際の処理は書かずに、「このメソッドは必ず作ってください」という約束だけを定義します。

たとえば、家を建てるときの設計図を思い浮かべてください。設計図には、玄関や部屋の配置は書いてありますが、実際の家具までは決まっていません。抽象クラスは、この設計図のような役割を持ちます。

Pythonのオブジェクト指向(シコウ)では、共通ルールを決めるために抽象クラスを使います。

2. ABCモジュールとは?

2. ABCモジュールとは?
2. ABCモジュールとは?

ABCモジュールとは、「Abstract Base Class(アブストラクト ベース クラス)」の略で、抽象クラスを作るための標準モジュールです。

Pythonには最初から用意されているので、追加インストールは不要です。abcモジュールを使うことで、抽象クラスや抽象メソッドを定義できます。

抽象メソッドとは、「中身を持たないメソッド」のことです。子クラスで必ず実装する必要があります。

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

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

まずは、ABCモジュールを使った抽象クラスの基本形を見てみましょう。


from abc import ABC, abstractmethod

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

ABCを継承することで、このクラスは抽象クラスになります。@abstractmethodが付いたメソッドは、必ず子クラスで作らなければなりません。

passは「何もしない」という意味で、処理内容が未定であることを表します。

4. 抽象クラスは直接使えない

4. 抽象クラスは直接使えない
4. 抽象クラスは直接使えない

抽象クラスは設計図なので、そのままインスタンス(実体)を作ることはできません。


animal = Animal()

TypeError: Can't instantiate abstract class Animal

このエラーは、「抽象クラスはそのまま使えません」という意味です。必ず子クラスを作る必要があります。

5. 子クラスで抽象メソッドを実装する

5. 子クラスで抽象メソッドを実装する
5. 子クラスで抽象メソッドを実装する

次に、抽象クラスを継承した子クラスを作ってみましょう。


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

dog = Dog()
print(dog.speak())

ワンワン

このように、抽象メソッドspeakを実装すれば、問題なくインスタンスを作れます。

抽象クラスによって、「必ずspeakメソッドを持つクラス」を保証できています。

6. 抽象メソッドを実装しないとどうなる?

6. 抽象メソッドを実装しないとどうなる?
6. 抽象メソッドを実装しないとどうなる?

もし抽象メソッドを実装しなかった場合、エラーになります。


class Cat(Animal):
    pass

cat = Cat()

TypeError: Can't instantiate abstract class Cat

この仕組みにより、作りかけのクラスやルール違反のクラスを防ぐことができます。

7. 抽象クラスを使うメリット

7. 抽象クラスを使うメリット
7. 抽象クラスを使うメリット

抽象クラスを使う最大のメリットは、「設計ミスを防げること」です。

複数人で開発する場合でも、「このメソッドは必須」という共通ルールをコードで表現できます。

また、プログラムが大きくなっても、クラスの役割が分かりやすくなり、読みやすいコードになります。

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

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

初心者の方がよく混乱するのは、「普通のクラス」と「抽象クラス」の違いです。

普通のクラスは、そのまま使うためのものです。一方、抽象クラスは「ルールを決めるためのクラス」です。

最初は無理に使わず、「共通の形を決めたいとき」に使うものだと覚えておくと理解しやすくなります。

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

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

関連記事:
カテゴリの一覧へ
新着記事
New1
Python
PythonのDjango ORMとは?Djangoでデータベースを操作する方法を初心者向けにやさしく解説
New2
PHP
PHPの特殊文字とエスケープ処理を完全ガイド!初心者向けにhtmlspecialcharsとhtmlentitiesをやさしく解説
New3
Python
Pythonのwhile文の使い方!無限ループとbreak・continueの活用
New4
PHP
PHP のセッション変数を保存・取得・削除する方法
人気記事
No.1
Java&Spring記事人気No1
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.2
Java&Spring記事人気No2
Python
Pythonの書き方を基本から解説!はじめてのPythonプログラム
No.3
Java&Spring記事人気No3
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
No.4
Java&Spring記事人気No4
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.5
Java&Spring記事人気No5
Python
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.6
Java&Spring記事人気No6
PHP
PHPでREST APIを作る方法を完全ガイド!初心者でもわかるAPI開発入門
No.7
Java&Spring記事人気No7
PHP
PHPの配列をソートする方法!sort, rsort, asort, ksortの使い方を丁寧に解説します!
No.8
Java&Spring記事人気No8
PHP
PHPのfor, while, do-whileループの使い方を完全ガイド!初心者でもわかる繰り返し処理