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:
classmethodmože menjati ili koristiti stanje klase.staticmethodje jednostavno funkcija unutar klase, koja ne zavisi od klase ili instance.