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

Pythonのデコレータ(@staticmethod / @classmethod)の使い方を完全ガイド!初心者でもわかるクラスメソッド入門

Pythonのデコレータ(@staticmethod / @classmethod)の使い方
Pythonのデコレータ(@staticmethod / @classmethod)の使い方

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

生徒

「Python(パイソン)のクラスの中に書く@staticmethod@classmethodって、何をしているんですか?」

先生

「それは、クラスの中にある関数の“役割”をはっきりさせるための目印です。使い分けると、プログラムがとても読みやすくなります。」

生徒

「普通のメソッドと何が違うんですか?」

先生

「では、Python(パイソン)のオブジェクト指向(シコウ)の基本から、順番に見ていきましょう。」

-

1. Pythonのデコレータとは?

1. Pythonのデコレータとは?
1. Pythonのデコレータとは?

Python(パイソン)のデコレータとは、「関数やメソッドの動きを少し変えるための仕組み」です。見た目は@から始まる特別な記号で、関数やメソッドの直前に書きます。

初心者の方は、「これはこの関数の役割を説明するラベル」くらいに考えると分かりやすいです。難しい仕組みを理解しなくても、使い方を覚えれば問題ありません。

2. クラスとメソッドの基本をおさらい

2. クラスとメソッドの基本をおさらい
2. クラスとメソッドの基本をおさらい

クラスとは、現実世界の「もの」をプログラムで表現した設計図です。例えば「人」や「商品」などをクラスとして表します。

メソッドとは、そのクラスが持つ「動作」です。Pythonでは、通常のメソッドはselfという特別な引数を使って、自分自身の情報にアクセスします。


class Person:
    def say_hello(self):
        print("こんにちは")

このselfは、「この人自身」という意味を持つ重要なキーワードです。

3. @staticmethodとは?

3. @staticmethodとは?
3. @staticmethodとは?

@staticmethod(スタティックメソッド)は、「クラスに属しているが、インスタンスの情報を使わないメソッド」です。

例えるなら、「道具箱に入っている便利な計算機」のような存在です。誰が使っても同じ結果になり、個人差は関係ありません。


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

result = Calculator.add(3, 5)
print(result)

8

このように、selfを使わず、クラス名から直接呼び出せるのが特徴です。

4. @staticmethodを使う場面

4. @staticmethodを使う場面
4. @staticmethodを使う場面

@staticmethodは、「クラスと関係はあるが、個々のデータを使わない処理」に向いています。例えば、入力チェックや単純な計算処理などです。


class UserCheck:
    @staticmethod
    def is_adult(age):
        return age >= 20

print(UserCheck.is_adult(18))
print(UserCheck.is_adult(25))

False
True

このように、状態を持たず、判断だけを行う処理にぴったりです。

-

5. @classmethodとは?

5. @classmethodとは?
5. @classmethodとは?

@classmethod(クラスメソッド)は、「クラスそのものの情報を使うメソッド」です。引数にはclsが渡され、これはクラス自身を表します。

例えるなら、「クラス全体のルールを管理する責任者」のような存在です。


class School:
    school_name = "ひまわり学園"

    @classmethod
    def show_school_name(cls):
        print(cls.school_name)

6. @classmethodの具体例

6. @classmethodの具体例
6. @classmethodの具体例

@classmethodは、クラス変数(クラス全体で共有する値)を扱うときによく使われます。


class Counter:
    count = 0

    @classmethod
    def increment(cls):
        cls.count += 1

Counter.increment()
Counter.increment()
print(Counter.count)

2

このように、クラス全体の状態を管理できるのが特徴です。

7. 通常メソッド・@staticmethod・@classmethodの違い

7. 通常メソッド・@staticmethod・@classmethodの違い
7. 通常メソッド・@staticmethod・@classmethodの違い

三つのメソッドの違いを簡単にまとめると、次のようになります。

  • 通常メソッド:自分自身(self)を使う
  • @staticmethod:クラスの補助機能
  • @classmethod:クラス全体の情報を扱う

この使い分けを意識することで、Pythonのオブジェクト指向がぐっと分かりやすくなります。

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

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

初心者の方は、「全部普通のメソッドでいいのでは?」と感じがちです。しかし、役割ごとに分けることで、後から見返したときに意味がすぐ分かるコードになります。

特にチーム開発や長いプログラムでは、この違いが大きな助けになります。

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

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

関連記事:
カテゴリの一覧へ
新着記事
New1
PHP
PHPの多次元配列(ネスト配列)の使い方をやさしく解説!初心者向けガイド
New2
PHP
PHPの三項演算子とnull合体演算子の使い方をやさしく解説!初心者向け条件分岐テクニック
New3
PHP
PHPのmatch文をやさしく解説!初心者でもわかるPHP8の新機能
New4
Python
Pythonのデータ型完全ガイド!数値・文字列・リスト・辞書の違いを解説
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.2
Java&Spring記事人気No2
Python
Pythonでファイルの更新日やサイズを取得する方法!初心者でもわかるos.stat()の使い方
No.3
Java&Spring記事人気No3
PHP
PHPでREST APIを作る方法を完全ガイド!初心者でもわかるAPI開発入門
No.4
Java&Spring記事人気No4
PHP
PHP のインストール方法(Windows・Mac・Linux)と開発環境
No.5
Java&Spring記事人気No5
PHP
初心者向けにPHP でファイルを開く・読み込む・書き込む方法(fopen, fwrite, fread)を解説する記事
No.6
Java&Spring記事人気No6
Python
Pythonのコンストラクタ(__init__)の使い方を解説!初心者でもわかるオブジェクトの初期化
No.7
Java&Spring記事人気No7
Python
Pythonの書き方を基本から解説!はじめてのPythonプログラム
No.8
Java&Spring記事人気No8
PHP
PHP のフォームバリデーション(入力チェック)を完全解説!初心者向けガイド
-
-