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.