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.
- Méthode statique (le premier argument est
-
__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éé.
- Méthode d'instance (le premier argument est