Sobes.tech
Junior — Middle

Čime se razlikuju classmethod i staticmethod u Pythonu?

sobes.tech АИ

Одговор од АИ

classmethod i staticmethod su dva tipa metoda u Pythonu koji se razlikuju u načinu na koji pristupaju klasi i njenim podacima.

  • @classmethod — metoda koja kao prvi argument prima samu klasu (cls), a ne instancu. Ovo omogućava metodi da radi sa klasom, menja njeno stanje ili kreira nove instance.

  • @staticmethod — metoda koja automatski ne prima ni instancu (self) ni klasu (cls). To je obična funkcija koja je logički povezana sa klasom, ali ne zavisi od njenog stanja.

Primer:

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())  # Prikazuje broj kreiranih objekata
print(MyClass.greet('Alice'))  # Prikazuje pozdrav

Rezime:

  • classmethod može menjati ili koristiti stanje klase.
  • staticmethod je jednostavno funkcija unutar klase, koja ne zavisi od klase ili instance.