self.value のインスタンス属性のない単なる引数のみを持ったメソッド
self.value のインスタンス属性のない単なる引数のみを持ったメソッドはどう記述する?self を使わない、つまり「インスタンスに依存しない」メソッドを記述したい場合は、**@staticmethod(静的メソッド)**を使います。
書き方:self なしのメソッド(static method)
class Example:
@staticmethod
def greet(name): # self を書かない
print(f"Hello, {name}")
呼び出し方
Example.greet("Alice") # クラスから直接呼べる
# または
obj = Example()
obj.greet("Alice") # インスタンスからも呼べる(selfは使わないので同じ)
@staticmethod を使うとどうなる?
self(インスタンス)にアクセスできない
クラス変数やインスタンス変数も使えない
完全に「ただの関数」と同じように使える
通常のメソッド(インスタンスメソッド)との違い
class Example:
def hello(self, name): # インスタンスメソッド
print(f"Hello, {name}")
@staticmethod
def greet(name): # 静的メソッド
print(f"Hi, {name}")
呼び出し 内容
obj.hello("A") self あり → インスタンスに依存
Example.greet("B") self なし → クラスにも依存しない
まとめ
self を持たないメソッドは @staticmethod を使って定義します。
それは「インスタンスのデータに触れない関数的なメソッド」です。
引数だけで完結する処理に向いています。