Sobes.tech
Middle

Was macht die Methode new im Kontext der Programmiersprache Python?

sobes.tech KI

Antwort von AI

__new__ - ist eine Klassenmethode, die für die Erstellung einer neuen Instanz der Klasse verantwortlich ist. Sie wird vor __init__ aufgerufen und bestimmt, welches Objekt zurückgegeben wird. Wird hauptsächlich verwendet, um einzigartige Objekte (Singleton) oder unveränderliche Objekte (wie Tuple oder Str) zu erstellen.

class Singleton:
    _instance = None

    def __new__(cls):
        # Überprüfen, ob bereits eine Instanz existiert
        if cls._instance is None:
            # Falls nicht, erstellen wir sie, indem wir die Erstellung an die Elternklasse (object) delegieren
            cls._instance = super().__new__(cls)
        # Gibt die existierende oder gerade erstellte Instanz zurück
        return cls._instance

# Anwendungsbeispiele
s1 = Singleton()
s2 = Singleton()

# Erwartetes Ergebnis: True
print(s1 is s2)

Vergleich zwischen __new__ und __init__:

  • __new__:

    • Statische Methode (erster Parameter ist cls).
    • Wird vor der Instanzerstellung aufgerufen.
    • Gibt die erstellte Instanz zurück.
  • __init__:

    • Instanzmethode (erster Parameter ist self).
    • Wird nach der Instanzerstellung aufgerufen.
    • Gibt keinen Wert zurück (implizit None).
    • Wird verwendet, um Attribute des erstellten Objekts zu initialisieren.