Sobes.tech
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.