2016年3月21日

クラスのスタティックメソッド

Python でクラスのスタティックメソッドを定義するには、専用の @staticmethodデコレータを使います。
ここでは @staticmethodデコレータの使い方を紹介します。


スタティックメソッドとして定義したいメソッドの前に @staticmethodデコレータを付けることで、スタティックメソッドとして定義できます。
通常のクラス内メソッドは第一引数を self にしますが、スタティックメソッドでは self は不要です。
定義したスタティックメソッドは、クラス名からでもインスタンスからでも呼び出し可能です。

# extension()をスタティックメソッド
# として持つクラスを定義。
>>> class Png(object):
...     @staticmethod
...     def extension():
...         return 'png'
...

# クラス名から呼ぶ
>>> Png.extension()
'png'

# インスタンスから呼ぶ
>>> png = Png()
>>> png.extension()
'png'

多くの場合、スタティックメソッドは通常の関数で置き換え可能です。スタティックメソッドを使うのは、以下のような場合になります。

  • スタティックメソッドの内容がクラスと密接に結びついており、クラス内に定義した方が見通しがよくなる。
  • インスタンス化にコストが掛かるので、インスタンス化しなくても呼び出し可能としたい。

0 件のコメント:

コメントを投稿