Bedeutung und Verwendung von @classmethod und @staticmethod für Anfänger
In Python sind @classmethod und @staticmethod Dekoratoren, mit denen Methoden definiert werden spezifisch Eigenschaften.
@classmethod
Eine Klassenmethode ist eine Methode, die an eine Klasse gebunden ist, nicht an eine einzelne Instanz der Klasse. Es muss eine Klasse als erstes Argument haben, die normalerweise den Namen cls hat. Konventionell werden Klassenmethoden mit den Präfixen from_ oder create_ benannt.
Wann ist @classmethod zu verwenden:
Beispiel:
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
Eine staticmethod ist eine Methode, die es nicht ist entweder an die Klasse oder eine Instanz gebunden. Es hat keinen Zugriff auf Instanz- oder Klassenvariablen. Statische Methoden werden normalerweise für Hilfsfunktionen verwendet, die ohne Änderung wiederverwendet werden können.
Wann ist @staticmethod zu verwenden:
Beispiel:
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
Unterschied zwischen @classmethod und @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 |
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „@classmethod' und „@staticmethod' in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!