classmethod() クラスメソッドデコレータ
最終更新:2026-09-22
classmethod() クラスメソッドデコレータ
@classmethod はメソッドをクラスメソッドとしてマークし、最初の引数は cls(クラス自体)である。
| カテゴリ | 組み込み関数 |
|---|---|
| 種類 | 組み込み関数 |
| Python バージョン | all |
📝 構文
@classmethod
def func(cls, ...)
⚙️ 引数
| function 必須 | The function to wrap as a class method. |
|---|
戻り値:A classmethod descriptor, usable as a decorator.
💥 例外
TypeError— Raised when the argument is not callable.
▶ 例
下のコードを編集し「実行」をクリックすると、出力パネルに結果が表示されます:
実行結果:
2
🏷️ 関連する組み込み関数
💡 関連するケース
さらに多くのケースは近日公開予定です。
❓ よくある質問
Qclassmethod と staticmethod の違いは何ですか?
Aclassmethod の最初の引数は cls(クラス自体)で、クラス属性にアクセスしたり他のクラスメソッドを呼び出したりできます。staticmethod は特別な引数を受け取らず、普通の関数と同じです。
Qクラスメソッドはインスタンスから呼び出せますか?
A呼び出せます。C().inc() も C.inc() も有効です。クラスからでもインスタンスからでも、classmethod の最初の引数は常にクラス自体です。
Qクラスメソッドは通常何に使いますか?
Aファクトリメソッド(例:Date.today())、クラス属性へのアクセスや変更、および多様な生成を実現する代替コンストラクタの定義に使います。
Qクラスメソッド内で cls.count += 1 がクラス変数を変更できるのはなぜですか?
Acls がクラス自体だからです。cls を通して変更すればクラス属性を変更します。self.count と書くとインスタンス属性になってしまい、両者は別物です。