Sobes.tech
Junior — Middle

Erklären Sie die Unterschiede zwischen self und cls im Kontext von Klassenmethoden

sobes.tech KI

Antwort von AI

In Python sind self und cls Konventionen für den ersten Parameter von Methoden, aber sie haben unterschiedliche Zwecke:

  • self ist eine Referenz auf eine konkrete Instanz der Klasse. Es wird in normalen Instanzmethoden verwendet, um auf die Attribute und Methoden dieses Objekts zuzugreifen.
  • cls ist eine Referenz auf die Klasse selbst, nicht auf eine Instanz. Es wird in Klassenmethoden (markiert mit dem Dekorator @classmethod) verwendet, um mit der Klasse insgesamt zu arbeiten, z.B. um neue Instanzen zu erstellen oder Klassenattribute zu ändern.

Beispiel:

class MyClass:
    class_var = 0

    def __init__(self, value):
        self.instance_var = value

    def instance_method(self):
        print(f'Instanzvariable: {self.instance_var}')

    @classmethod
    def class_method(cls):
        print(f'Klassenvariable: {cls.class_var}')

obj = MyClass(10)
obj.instance_method()  # ruft eine Instanzmethode auf
MyClass.class_method()  # ruft eine Klassenmethode auf