ITエンジニア ノイのブログ

ITエンジニアのノイです。 YouTubeで ITエンジニアのお勉強という学習用の動画を公開しています。チャンネル登録お願いします!https://m.youtube.com/channel/UCBKfJIMVWXd3ReG_FDh31Aw/playlists

pythonの@classmethod

@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)

使用ケース

  1. クラスのインスタンスを作成することなく、クラス自体を介してメソッドを呼び出したい場合。
  2. クラス変数にアクセスする必要がある場合。
  3. サブクラス化されたクラスでも正しく動作する汎用的なメソッドを作成したい場合。

クラスメソッドは、selfパラメータ(インスタンス自体への参照)ではなく、clsパラメータ(クラス自体への参照)を受け取る点に注意してください。これにより、クラスメソッド内でクラス変数にアクセスできます。

youtu.be