Sobes.tech
Middle

Wat doet de methode new in de context van de Python-taal?

sobes.tech AI

Antwoord van AI

__new__ - is een klasse-methode die verantwoordelijk is voor het maken van een nieuw exemplaar van de klasse. Het wordt voor __init__ aangeroepen en bepaalt welk object wordt geretourneerd. Het wordt vooral gebruikt voor het maken van unieke objecten (Singleton) of onveranderlijke typen (zoals tuple of str).

class Singleton:
    _instance = None

    def __new__(cls):
        # Controleer of er al een instantie bestaat
        if cls._instance is None:
            # Zo niet, maak er een door de creatie te delegeren aan de ouderklasse (object)
            cls._instance = super().__new__(cls)
        # Geef de bestaande of net gemaakte instantie terug
        return cls._instance

# Voorbeeldgebruik
s1 = Singleton()
s2 = Singleton()

# Verwacht resultaat: True
print(s1 is s2)

Vergelijking tussen __new__ en __init__:

  • __new__:

    • Statische methode (de eerste parameter is cls).
    • Wordt voor het maken van de instantie aangeroepen.
    • Geeft de gemaakte instantie terug.
  • __init__:

    • Instantiemethode (de eerste parameter is self).
    • Wordt na het maken van de instantie aangeroepen.
    • Geeft geen waarden terug (retourneert impliciet None).
    • Wordt gebruikt om de attributen van het gemaakte object te initialiseren.