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