概要
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
を使うことでコードの整理が可能です。