Junior — Middle
Jaký je rozdíl mezi použitím metod deklarovaných jako static a class v Pythonu?
sobes.tech AI
Odpověď od AI
V Pythonu se metody deklarované jako @staticmethod a @classmethod liší způsobem přístupu k datům třídy a instance:
-
@staticmethod — je metoda, která automaticky nepřijímá odkaz na instanci (
self) ani na třídu (cls). Chová se jako běžná funkce, ale je umístěna uvnitř třídy pro logické seskupení. Nemůže měnit stav třídy nebo instance. -
@classmethod — je metoda, která jako první argument přijímá samotnou třídu (
cls), nikoliv instanci. Umožňuje pracovat s atributy třídy, vytvářet alternativní konstruktory a měnit stav třídy.
Příklad:
class MyClass:
count = 0
@staticmethod
def greet():
print("Ahoj!")
@classmethod
def increment_count(cls):
cls.count += 1
MyClass.greet() # Vytiskne: Ahoj!
MyClass.increment_count()
print(MyClass.count) # Vytiskne: 1
Tedy, staticmethod je prostě funkce uvnitř třídy, zatímco classmethod je metoda pracující s třídou samotnou.