スタティックメソッドデコレータ
CoddyのPythonジャーニー「Object Oriented Programming」セクションの一部 — レッスン 11/64。
@staticmethodデコレータは、selfやクラスを必要としないメソッドを作成します。これらは通常の関数のように動作しますが、クラスに属しています。
静的メソッドを持つクラスの例を以下に示します:
class MathHelper:
@staticmethod
def add(a, b):
return a + b
@staticmethod
def is_even(number):
return number % 2 == 0クラス名を使用して静的メソッドを呼び出します:
result = MathHelper.add(5, 3)
print(result)
check = MathHelper.is_even(10)
print(check)オブジェクトからそれらを呼び出すこともできます:
helper = MathHelper()
result2 = helper.add(2, 4)
print(result2)出力:
8
True
6静的メソッドは、インスタンスやクラスのデータにアクセスしません:
class Calculator:
brand = "Python Calc"
def __init__(self, owner):
self.owner = owner
@staticmethod
def multiply(x, y):
# self.owner や Calculator.brand にはアクセスできません
return x * y重要なポイント: クラスに関連しているが、インスタンス (self) やクラスのデータにアクセスする必要がない関数が必要な場合は、@staticmethod を使用します。self パラメータは不要です。
チートシート
@staticmethodデコレータは、selfやクラスを必要としないメソッドを作成します。これらは通常の関数のように動作しますが、クラスに属しています。
class MathHelper:
@staticmethod
def add(a, b):
return a + b
@staticmethod
def is_even(number):
return number % 2 == 0クラス名を使用してスタティックメソッドを呼び出します:
result = MathHelper.add(5, 3)
check = MathHelper.is_even(10)オブジェクトから呼び出すこともできます:
helper = MathHelper()
result2 = helper.add(2, 4)スタティックメソッドはインスタンスやクラスのデータにアクセスしません。selfパラメータは不要です。
自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。