Sobes.tech
Junior — Middle

Care este diferența dintre utilizarea metodelor declarate ca static și class în Python?

sobes.tech AI

Răspuns de la AI

În Python, metodele declarate ca @staticmethod și @classmethod diferă în modul în care accesează datele clasei și ale instanței:

  • @staticmethod — este o metodă care nu primește automat o referință la instanță (self) sau la clasă (cls). Se comportă ca o funcție obișnuită, dar se află în interiorul clasei pentru grupare logică. Nu poate modifica starea clasei sau a instanței.

  • @classmethod — este o metodă care primește ca primul argument clasa însăși (cls), nu o instanță. Permite lucrul cu atributele clasei, crearea de constructori alternativi și modificarea stării clasei.

Exemplu:

class MyClass:
    count = 0

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

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

MyClass.greet()          # Va afișa: Salut!
MyClass.increment_count()
print(MyClass.count)     # Va afișa: 1

Prin urmare, staticmethod este pur și simplu o funcție în interiorul clasei, iar classmethod este o metodă care lucrează cu clasa însăși.