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.