Mi a különbség a Pythonban a static és a class módszerek használata között?
sobes.tech MI
Válasz az MI-től
Pythonban a @staticmethod és @classmethod módszerek különböznek abban, ahogyan hozzáférnek az osztály és az példány adataihoz:
-
@staticmethod — egy olyan módszer, amely automatikusan nem kap hivatkozást sem az példányra (
self), sem az osztályra (cls). Normál függvényként viselkedik, de az osztályon belül helyezkedik el logikai csoportosítás céljából. Nem módosíthatja az osztály vagy az példány állapotát. -
@classmethod — egy olyan módszer, amely első argumentumként az osztályt (
cls) kapja meg, nem pedig egy példányt. Lehetővé teszi az osztály attribútumaival való munkát, alternatív konstruktorok létrehozását és az osztály állapotának módosítását.
Példa:
class MyClass:
count = 0
@staticmethod
def greet():
print("Szia!")
@classmethod
def increment_count(cls):
cls.count += 1
MyClass.greet() # Kiírja: Szia!
MyClass.increment_count()
print(MyClass.count) # Kiírja: 1
Tehát a staticmethod egyszerűen egy függvény a osztályon belül, míg a classmethod egy olyan módszer, amely az osztállyal dolgozik.