Sobes.tech
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 classmethod módosíthatja vagy használhatja az osztály állapotát.
  • A staticmethod egyszerűen egy függvény az osztályon belül, amely nem függ az osztálytól vagy a példánytól.