スタティックメソッド
スタティックメソッド ▲
クラスメソッドとスタティックメソッドは非常によく似ている
どちらもインスタンス化をせずとも呼び出せるメソッドであり、クラス経由でもインスタンス経由でも呼び出すことができる
異なる点として、クラスメソッドは第一引数にクラス自身を指す cls を暗黙的に受け取るのに対し、スタティックメソッドは何も受け取らない
クラスに依存しないメソッドということであれば、クラス内のメソッドではなく関数として定義すればよいのでは?という疑問もあるが、例えばクラスを継承してメソッドをオーバーライドさせる場合など使い道がある
クラスに依存するメソッドなのか、依存しないがクラス内に含めたいメソッドなのか、それとも全く関係ない関数レベルなのかを判断して使い分けるとよい
スタティックメソッドは @staticmethod とデコレータをつけることで使用することができる
具体的な例を以下に記載する
lesson.py
class T(object):
@staticmethod
def sample_method():
print('Hello,World!!')
t = T()
# スタティックメソッドの呼び出しは クラス名.メソッド名
T.sample_method() # Hello,World!!
# インスタンス経由でも同様に呼び出せる
t.sample_method() # Hello,World!!
目次