Pythonの静的メソッド
この短い投稿では、Pythonの静的メソッドの作成と使用方法について学びます。また、静的メソッドがインスタンスメソッドと比較してどのような利点と欠点を持つかを見てみましょう。さあ始めましょう。
静的メソッドとは何ですか?
Pythonの静的メソッドは、クラスレベルのメソッドと非常に似ていますが、静的メソッドはそのクラスのオブジェクトにではなくクラスにバインドされている点が異なります。つまり、静的メソッドはそのクラスのオブジェクトなしで呼び出すことができます。これはまた、静的メソッドがオブジェクトの状態を変更できないことを意味します。それでは、Pythonで静的メソッドを作成する方法を見てみましょう。
Pythonの静的メソッドの作成
Pythonの静的メソッドは2つの方法で作成できます。それぞれの方法を見てみましょう:
staticmethod()
直接、staticmethod()
アプローチの使用方法に関するコードスニペットに移りましょう:
class Calculator:
def addNumbers(x, y):
return x + y
# addNumbers静的メソッドを作成する
Calculator.addNumbers = staticmethod(Calculator.addNumbers)
print('Product:', Calculator.addNumbers(15, 110))
作成したaddNumbersをオブジェクトなしで呼び出しました。このプログラムを実行すると、次の出力が得られます:そこには驚きはありませんでした。このアプローチは制御されており、各場所でクラスメソッドから静的メソッドを作成することも可能です。同じ例で別のアプローチを見てみましょう。
を使用する@staticmethod
これは、メソッドがクラスメソッドであり、それを静的にすることをステートメント定義に頼る必要がないため、より微妙な静的メソッドの作成方法です。この注釈をコードスニペットで使用してみましょう:
class Calculator:
# addNumbers静的メソッドを作成
@staticmethod
def addNumbers(x, y):
return x + y
print('Product:', Calculator.addNumbers(15, 110))
このプログラムを実行すると、次のような出力が得られます: 実際には、この方法は静的メソッドを作成するためのはるかに良い方法であり、メソッドを静的に保持する意図が、それを作成し、
@staticmethod
注釈でマークされるとすぐに明確になります。
Python静的メソッドの利点
静的メソッドには非常に明確なユースケースがあります。オブジェクトではなくクラス全体に対する機能が必要な場合、メソッドを静的にします。これは、通常、オブジェクトのライフサイクルに結び付いていないため、ユーティリティメソッドを作成する必要があるときにかなり有利です。最後に、静的メソッドでは、最初の引数としてself
を渡す必要はありません。APIリファレンス:Pythonドキュメント
Source:
https://www.digitalocean.com/community/tutorials/python-static-method