ここでは @staticmethodデコレータの使い方を紹介します。
スタティックメソッドとして定義したいメソッドの前に @staticmethodデコレータを付けることで、スタティックメソッドとして定義できます。
通常のクラス内メソッドは第一引数を self にしますが、スタティックメソッドでは self は不要です。
定義したスタティックメソッドは、クラス名からでもインスタンスからでも呼び出し可能です。
# extension()をスタティックメソッド # として持つクラスを定義。 >>> class Png(object): ... @staticmethod ... def extension(): ... return 'png' ... # クラス名から呼ぶ >>> Png.extension() 'png' # インスタンスから呼ぶ >>> png = Png() >>> png.extension() 'png'
多くの場合、スタティックメソッドは通常の関数で置き換え可能です。スタティックメソッドを使うのは、以下のような場合になります。
- スタティックメソッドの内容がクラスと密接に結びついており、クラス内に定義した方が見通しがよくなる。
- インスタンス化にコストが掛かるので、インスタンス化しなくても呼び出し可能としたい。
0 件のコメント:
コメントを投稿