ホームページ >バックエンド開発 >Python チュートリアル >Python の「@classmethod」と「@staticmethod」の違いは何ですか?
初心者のための @classmethod と @staticmethod の意味と使い方
Python では、@classmethod と @staticmethod はメソッドを定義するために使用されるデコレータです。特定のcharacteristics.
@classmethod
クラスメソッドは、クラスの個々のインスタンスではなく、クラスにバインドされるメソッドです。最初の引数としてクラスを指定する必要があり、通常は cls という名前が付けられます。慣例により、クラスメソッドの名前には from_ または create_ という接頭辞が付けられます。
@classmethod を使用する場合:
例:
class Date: def __init__(self, day, month, year): self.day = day self.month = month self.year = year @classmethod def from_string(cls, date_as_string): day, month, year = map(int, date_as_string.split('-')) return cls(day, month, year)
@staticmethod
静的メソッドは、次のメソッドです。クラスにもインスタンスにもバインドされません。インスタンス変数やクラス変数にはアクセスできません。静的メソッドは通常、変更せずに再利用できるユーティリティ関数に使用されます。
@staticmethod を使用する場合:
例:
class Date: @staticmethod def is_date_valid(date_as_string): day, month, year = map(int, date_as_string.split('-')) return day <= 31 and month <= 12 and year <= 3999
@classmethod と @staticmethod の違い
Feature | @classmethod | @staticmethod |
---|---|---|
Access to class | Has access to the class | No access to the class |
Access to instance | No access to instances | No access to instances |
Usage | Factory methods, operations on the class | Utility functions, independent of class or instances |
以上がPython の「@classmethod」と「@staticmethod」の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。