Junior — Middle
Mi a különbség a classmethod és a staticmethod között Pythonban?
sobes.tech MI
Válasz az MI-től
A classmethod és a staticmethod két típusú metódus a Pythonban, amelyek abban különböznek, hogyan férnek hozzá az osztohoz és az adataihoz.
-
@classmethod — olyan metódus, amely első argumentumként az osztályt (
cls) kapja, nem pedig egy példányt. Ez lehetővé teszi, hogy a metódus az osztállyal dolgozzon, módosítsa az állapotát vagy új példányokat hozzon létre. -
@staticmethod — olyan metódus, amely automatikusan nem kap sem példányt (
self), sem osztályt (cls). Ez egy normál függvény, amely logikailag kapcsolódik az osztályhoz, de nem függ az állapotától.
Példa:
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()) # Megmutatja a létrehozott objektumok számát
print(MyClass.greet('Alice')) # Üdvözlő üzenetet ad
Összefoglaló:
- A
classmethodmódosíthatja vagy használhatja az osztály állapotát. - A
staticmethodegyszerűen egy függvény az osztályon belül, amely nem függ az osztálytól vagy a példánytól.