カテゴリ: 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の抽象クラスとは?ABCモジュールを使った設計方法を初心者向けに解説
New2
PHP
PHP のデータ型を完全ガイド!初心者でもわかる int, string, float, bool など
New3
PHP
PHPのtry-catchで学ぶ例外処理入門!初心者でも理解できるエラーハンドリング基礎ガイド
New4
PHP
PHPのarray_mapの使い方を完全解説!初心者でもわかる配列の要素を一括変換する方法
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.2
Java&Spring記事人気No2
PHP
PHP のフォームバリデーション(入力チェック)を完全解説!初心者向けガイド
No.3
Java&Spring記事人気No3
PHP
PHP のインストール方法(Windows・Mac・Linux)と開発環境
No.4
Java&Spring記事人気No4
PHP
PHPでREST APIを作る方法を完全ガイド!初心者でもわかるAPI開発入門
No.5
Java&Spring記事人気No5
PHP
初心者向けにPHP でファイルを開く・読み込む・書き込む方法(fopen, fwrite, fread)を解説する記事
No.6
Java&Spring記事人気No6
PHP
PHPのバルクインサート完全ガイド!初心者でもわかる複数データの一括処理と高速なデータベース操作
No.7
Java&Spring記事人気No7
PHP
PHP の可変変数と変数の参照渡しを完全解説!初心者でも理解できる動的変数の使い方
No.8
Java&Spring記事人気No8
Python
Pythonのコンストラクタ(__init__)の使い方を解説!初心者でもわかるオブジェクトの初期化
-
-