Junior — Middle
Aký je rozdiel medzi používaním metód deklarovaných ako static a class v Pythone?
sobes.tech AI
Odpoveď od AI
V Pythone sa metódy deklarované ako @staticmethod a @classmethod líšia spôsobom prístupu k údajom triedy a inštancie:
-
@staticmethod — je metóda, ktorá automaticky neprijíma odkaz na inštanciu (
self) ani na triedu (cls). Správa sa ako bežná funkcia, ale je umiestnená v rámci triedy na logické zoskupenie. Nemôže meniť stav triedy alebo inštancie. -
@classmethod — je metóda, ktorá ako prvý argument prijíma samotnú triedu (
cls), nie inštanciu. Umožňuje pracovať s atribútmi triedy, vytvárať alternatívne konštruktory a meniť stav triedy.
Príklad:
class MyClass:
count = 0
@staticmethod
def greet():
print("Ahoj!")
@classmethod
def increment_count(cls):
cls.count += 1
MyClass.greet() # Vytlačí: Ahoj!
MyClass.increment_count()
print(MyClass.count) # Vytlačí: 1
Takže, staticmethod je jednoduchá funkcia v rámci triedy, zatiaľ čo classmethod je metóda, ktorá pracuje s triedou samotnou.