Sobes.tech
Middle

Que fait la méthode new dans le contexte du langage Python?

sobes.tech IA

Réponse de l'IA

__new__ est une méthode de classe responsable de la création d'une nouvelle instance de la classe. Elle est appelée avant __init__ et détermine quel objet sera renvoyé. Elle est principalement utilisée pour créer des objets uniques (Singleton) ou des objets de type immuable (comme tuple ou str).

class Singleton:
    _instance = None

    def __new__(cls):
        # Vérifie si une instance existe déjà
        if cls._instance is None:
            # Si non, la crée en déléguant la création à la classe parente (object)
            cls._instance = super().__new__(cls)
        # Retourne l'instance existante ou la toute nouvelle
        return cls._instance

# Exemples d'utilisation
s1 = Singleton()
s2 = Singleton()

# Résultat attendu : True
print(s1 is s2)

Comparaison entre __new__ et __init__ :

  • __new__ :

    • Méthode statique (le premier argument est cls).
    • Appelée AVANT la création de l'instance.
    • Retourne l'instance créée.
  • __init__ :

    • Méthode d'instance (le premier argument est self).
    • Appelée APRÈS la création de l'instance.
    • Ne retourne pas de valeur (retourne implicitement None).
    • Utilisée pour initialiser les attributs de l'objet créé.