Sobes.tech
Junior — Middle

Was ist der Unterschied zwischen der Verwendung von Methoden, die als static und class in Python deklariert sind?

sobes.tech KI

Antwort von AI

In Python unterscheiden sich die Methoden, die als @staticmethod und @classmethod deklariert sind, darin, wie sie auf die Daten der Klasse und der Instanz zugreifen:

  • @staticmethod — ist eine Methode, die automatisch weder eine Referenz auf die Instanz (self) noch auf die Klasse (cls) erhält. Sie verhält sich wie eine normale Funktion, befindet sich aber innerhalb der Klasse zur logischen Gruppierung. Sie kann den Zustand der Klasse oder der Instanz nicht ändern.

  • @classmethod — ist eine Methode, die als erstes Argument die Klasse selbst (cls) erhält, anstatt eine Instanz. Sie ermöglicht die Arbeit mit Klassenattributen, das Erstellen alternativer Konstruktoren und das Ändern des Zustands der Klasse.

Beispiel:

class MyClass:
    count = 0

    @staticmethod
    def greet():
        print("Hallo!")

    @classmethod
    def increment_count(cls):
        cls.count += 1

MyClass.greet()          # Gibt aus: Hallo!
MyClass.increment_count()
print(MyClass.count)     # Gibt aus: 1

Daher ist staticmethod einfach eine Funktion innerhalb der Klasse, während classmethod eine Methode ist, die mit der Klasse selbst arbeitet.