Junior — Middle
Aký je rozdiel medzi classmethod a staticmethod v Pythone?
sobes.tech AI
Odpoveď od AI
classmethod a staticmethod sú dva typy metód v Pythone, ktoré sa líšia spôsobom, akým získavajú prístup ku triede a jej údajom.
-
@classmethod — metóda, ktorá ako prvý argument prijíma samotnú triedu (
cls), nie inštanciu. To umožňuje metóde pracovať s triedou, meniť jej stav alebo vytvárať nové inštancie. -
@staticmethod — metóda, ktorá automaticky nezíska ani inštanciu (
self), ani triedu (cls). Je to obyčajná funkcia, ktorá je logicky spojená s triedou, ale nezávisí od jej stavu.
Príklad:
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()) # Zobrazí počet vytvorených objektov
print(MyClass.greet('Alice')) # Zobrazí pozdrav
Zhrnutie:
classmethodmôže meniť alebo využívať stav triedy.staticmethodje len obyčajná funkcia v triede, ktorá nezávisí od triedy alebo inštancie.