Sobes.tech
Junior — Middle

Aký je rozdiel medzi classmethod a staticmethod v Pythone?

sobes.tech AI

Odpoveď od AI

classmethod a staticmethod sú dva typy metód v Pythone, ktoré sa líšia spôsobom, akým získavajú prístup ku triede a jej údajom.

  • @classmethod — metóda, ktorá ako prvý argument prijíma samotnú triedu (cls), nie inštanciu. To umožňuje metóde pracovať s triedou, meniť jej stav alebo vytvárať nové inštancie.

  • @staticmethod — metóda, ktorá automaticky nezíska ani inštanciu (self), ani triedu (cls). Je to obyčajná funkcia, ktorá je logicky spojená s triedou, ale nezávisí od jej stavu.

Príklad:

class MyClass:
    count = 0

    def __init__(self):
        MyClass.count += 1

    @classmethod
    def get_count(cls):
        return cls.count

    @staticmethod
    def greet(name):
        return f"Hello, {name}!"

obj = MyClass()
print(MyClass.get_count())  # Zobrazí počet vytvorených objektov
print(MyClass.greet('Alice'))  # Zobrazí pozdrav

Zhrnutie:

  • classmethod môže meniť alebo využívať stav triedy.
  • staticmethod je len obyčajná funkcia v triede, ktorá nezávisí od triedy alebo inštancie.