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.

💥 例外

▶ 例

下のコードを編集し「実行」をクリックすると、出力パネルに結果が表示されます:

実行結果:

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 と書くとインスタンス属性になってしまい、両者は別物です。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%