Sobes.tech
Junior — Middle

Koja je razlika između korišćenja metoda deklarisanih kao static i class u Pythonu?

sobes.tech АИ

Одговор од АИ

U Pythonu, metode označene kao @staticmethod i @classmethod razlikuju se u načinu pristupa podacima klase i instance:

  • @staticmethod — metoda koja automatski ne prima referencu ni na instancu (self), ni na klasu (cls). Ponaša se kao obična funkcija, ali se nalazi unutar klase radi logičke grupacije. Ne može menjati stanje klase ili instance.

  • @classmethod — metoda koja kao prvi argument prima samu klasu (cls), a ne instancu. Omogućava rad sa atributima klase, kreiranje alternativnih konstruktora i menjanje stanja klase.

Primer:

class MyClass:
    count = 0

    @staticmethod
    def greet():
        print("Zdravo!")

    @classmethod
    def increment_count(cls):
        cls.count += 1

MyClass.greet()          # Ispisaće: Zdravo!
MyClass.increment_count()
print(MyClass.count)     # Ispisaće: 1

Dakle, staticmethod je jednostavno funkcija unutar klase, a classmethod je metoda koja radi sa samom klasom.