@classmethod
は、Pythonのデコレータ(Decorator)の一つであり、クラスメソッド(classmethod)を定義するために使用されます。
クラスメソッドは、クラス自体に関連付けられているメソッドであり、通常のインスタンスメソッドとは異なる特徴を持ちます。クラスメソッドは、クラスのインスタンスを作成せずに呼び出すことができます。
クラスメソッドは、通常のメソッドと同じように定義されますが、メソッドの上に@classmethod
デコレータを追加します。
簡単な例
class MyClass: @classmethod def my_class_method(cls, arg1, arg2): # クラスメソッドの実装 # clsはクラス自体を指す特別なパラメータです # クラスメソッド内でクラス変数にアクセスする場合は、clsを使用します cls.class_variable += arg1 + arg2 # クラスメソッドの呼び出し MyClass.my_class_method(1, 2)
使用ケース
- クラスのインスタンスを作成することなく、クラス自体を介してメソッドを呼び出したい場合。
- クラス変数にアクセスする必要がある場合。
- サブクラス化されたクラスでも正しく動作する汎用的なメソッドを作成したい場合。
クラスメソッドは、self
パラメータ(インスタンス自体への参照)ではなく、cls
パラメータ(クラス自体への参照)を受け取る点に注意してください。これにより、クラスメソッド内でクラス変数にアクセスできます。