概要

Pythonでは、@staticmethodデコレータを使うことで、インスタンスに依存せずにクラス全体に関連する処理を定義できます。静的メソッドは、インスタンスの状態にアクセスせず、クラスの属性やメソッドとも関係しない処理を行うときに便利です。

静的メソッドの定義方法

class MyClass:
    @staticmethod
    def my_static_method(x):
        print(x)

@staticmethodを付けることで、メソッドがインスタンスではなくクラスに関連づけられ、MyClass.my_static_method()のように呼び出せます。

クラスメソッドとの違い

静的メソッドは、インスタンスもクラスも引数として渡されません。対照的に、クラスメソッド(@classmethod)は、最初の引数としてクラス自体(通常はcls)を受け取ります。

class MyClass:
    @classmethod
    def my_class_method(cls, x):
        print(f"クラス名: {cls.__name__}, 値: {x}")

使用例

静的メソッドは、クラス全体に関連する汎用的な関数や、クラスに依存しないロジックを定義するのに適しています。例えば、ユーティリティ関数やデータ変換ロジックなどが考えられます。

class Calculator:
    @staticmethod
    def add(a, b):
        return a + b

このように、Calculator.add(3, 5)とインスタンス化なしで使えます。

まとめ

静的メソッドは、クラスに依存しない処理を定義する際に便利な機能です。クラスのインスタンスや状態に関与しない処理を行う場合は、@staticmethodを使うことでコードの整理が可能です。