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

Pythonのクラスメソッドと静的メソッドの違い・使い分けガイド

Pythonのクラスメソッドと静的メソッドの違い・使い分けガイド
Pythonのクラスメソッドと静的メソッドの違い・使い分けガイド

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

生徒

「Pythonのクラスには、普通のメソッド以外にも種類があるって聞いたんですが、本当ですか?」

先生

「あります。代表的なのがクラスメソッドと静的メソッドです。役割が違うので、使い分けが大切です。」

生徒

「名前が似ていて、どう違うのか全然わかりません……。」

先生

「心配いりません。日常の例えを使いながら、順番に整理していきましょう。」

1. まずはPythonのメソッドの基本

1. まずはPythonのメソッドの基本
1. まずはPythonのメソッドの基本

Pythonのクラスには「メソッド」と呼ばれる処理を書けます。メソッドとは、クラスに属する関数のことです。関数は処理のまとまりでしたが、メソッドは「クラスの中にある関数」と考えると分かりやすいです。

これまでによく見てきたのは「インスタンスメソッド」です。インスタンスメソッドは、クラスから作られた実体であるインスタンスを操作します。自分専用のノートに書き込むようなイメージです。

2. クラスメソッドとは何か

2. クラスメソッドとは何か
2. クラスメソッドとは何か

クラスメソッドは、インスタンスではなく「クラスそのもの」を操作するためのメソッドです。クラス全体に関係する処理を書くときに使います。

クラスメソッドを作るときは、@classmethodという目印を書きます。そして、最初の引数にはclsという名前を使います。これは「このクラス自身」を表します。


class User:
    count = 0

    def __init__(self, name):
        self.name = name
        User.count += 1

    @classmethod
    def get_count(cls):
        return cls.count

user1 = User("太郎")
user2 = User("花子")

print(User.get_count())

2

この例では、ユーザーが何人作られたかをクラス全体で管理しています。クラスメソッドは「クラス共有の情報を見る窓口」のような役割を持ちます。

3. 静的メソッドとは何か

3. 静的メソッドとは何か
3. 静的メソッドとは何か

静的メソッドは、クラスにもインスタンスにも強く依存しない処理を書くためのメソッドです。言い換えると、「たまたまクラスの中に置いている関数」です。

静的メソッドを作るときは、@staticmethodという目印を使います。引数にselfclsは必要ありません。


class MathUtil:
    @staticmethod
    def add(a, b):
        return a + b

print(MathUtil.add(3, 5))

8

この処理は、特定のインスタンスやクラスの状態を使っていません。ただの計算処理なので、静的メソッドとして書くのが適しています。

4. 日常の例えで理解する違い

4. 日常の例えで理解する違い
4. 日常の例えで理解する違い

クラスメソッドは「学校全体のルール」を扱う先生のような存在です。生徒個人ではなく、学校全体に関わる情報を管理します。

一方、静的メソッドは「学校に関係する便利な計算係」です。誰の成績でもなく、学校の人数でもなく、ただ計算をするだけの役割です。

5. どう使い分ければいいのか

5. どう使い分ければいいのか
5. どう使い分ければいいのか

クラスの情報を使う、またはクラス全体の状態を変更したい場合はクラスメソッドを使います。例えば、インスタンスの数を数える、共通設定を管理する、といった場面です。

クラスにもインスタンスにも関係なく、処理だけをまとめたい場合は静的メソッドが向いています。クラスに関係する処理を整理するための箱として使うと、コードが読みやすくなります。

6. 初心者が混乱しやすいポイント

6. 初心者が混乱しやすいポイント
6. 初心者が混乱しやすいポイント

最初は「全部インスタンスメソッドでいいのでは」と感じるかもしれません。しかし、役割を分けることで、コードの意味がはっきりします。

クラスメソッドと静的メソッドは、Pythonのオブジェクト指向プログラミングを整理するための道具です。無理に使う必要はありませんが、意味を知っておくと理解が深まります。

カテゴリの一覧へ
新着記事
New1
Flask
Flaskのログレベル(DEBUG/INFO/WARNING/ERROR)を使い分ける方法を完全ガイド!
New2
Python
Pythonのfrozensetとは?ミュータブルなsetとの違いをわかりやすく解説
New3
Python
Pythonでセットを活用してデータをフィルタリングする方法!初心者でもわかるセットの基本と使い方
New4
Python
Pythonの辞書操作まとめ!初心者が知っておくべき便利ワザ集
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
No.2
Java&Spring記事人気No2
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.3
Java&Spring記事人気No3
Flask
FlaskアプリのSECRET_KEYの設定方法を完全ガイド!初心者でもわかるセキュリティ対策
No.4
Java&Spring記事人気No4
Flask
Flaskで非同期処理を成功させるベストプラクティス集|初心者でも失敗しない考え方
No.5
Java&Spring記事人気No5
Django
Djangoモデル入門|初心者が最初に知るべきORMの基本操作
No.6
Java&Spring記事人気No6
Python
Pythonのリストを分割する方法を完全ガイド!初心者でもわかるスライス・split・itertoolsの使い方
No.7
Java&Spring記事人気No7
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.8
Java&Spring記事人気No8
Flask
Flaskのログをファイルに保存する方法!初心者でもわかる設定手順を徹底解説