@staticmethodについて
pythonのstaticmethodがいまいちよくわからなかったので調べて少しまとめてみた。
公式のドキュメントはこちら→公式ドキュメント
公式ドキュメントを見ると以下のように使うと書かれている。
class C: @staticmethod def f(arg1, arg2, ...): ...
デコレーターとして使うみたいだけど、どうやら関数を定義する時に通常pythonではselfを第一引数とするが、これがいらないらしい。 まぁつまるところインスタンスとやりとりしない関数らしい。 以下のようなコードが書けないらしい。
# -*- coding: utf-8 -*- """ @staticmethodサンプルコード """ class StaticSample(): def can_not_call(self): print("can't call") @staticmethod def static_sample(): self.can_not_call() #呼び出せない
インスタンスとやりとりしない関数は@staticmethodで書いたほうがはやくなるのかな? とおもったらそうらしい。→参考
なのでインスタンスとやりとりのない関数は@staticmethodで書こう!