クラスメソッドの説明は公式ドキュメントの以下にあります。
組み込み関数 @classmethod
標準型の階層 節の一番最後
後者の説明がわかりやすいです。「クラスメソッドオブジェクトは、静的メソッドオブジェクトに似て、別のオブジェクトを包むラッパであり、そのオブジェクトをクラスやクラスインスタンスから取り出す方法を代替します。このようにして取得したクラスメソッドオブジェクトの動作については、上の "ユーザ定義メソッド (user-defined method)" で説明されています。クラスメソッドオブジェクトは組み込みのコンストラクタ classmethod() で生成されます。」
要するにラッパであり、関数などのオブジェクトをクラスを経由してアクセスするようにしたものです。
クラスに深く関係あるけれども、特定のインスタンスには結びつかないような、関数オブジェクトを表すのに、使います。以下に例示しますので参考にしてください。
例:意味合い的に特定インスタンスとは結びつかない関数をクラスメソッドとする
Python
1class MyObject:
2 @classmethod
3 def load(cls, filename): # o = MyObject.load('file.dat') ファイルからロードする前にはインスタンスは無い
4
5 def save(self, filename): # o.save('file.dat') 既にインスタンスがあるからセーブできる
例:似たような役割のサポート関数群を、グローバルに置かずにクラス内にまとめてスコープを管理する
Python
1class UtilityFunc:
2 @classmethod
3 def benri_func1(cls, parameter):
4 @calssmethod
5 def benri_func2(cls, parameter):
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/30 12:38