Sobes.tech
Junior — Middle

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.