Menu
Coddy logo textTech

スタティックメソッドデコレータ

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パラメータは不要です。

自分で試してみよう

このレッスンにはコードチャレンジは含まれていません。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Object Oriented Programmingのすべてのレッスン