Middle
Ce face metoda new în contextul limbajului Python?
sobes.tech AI
Răspuns de la AI
__new__ - este o metodă de clasă responsabilă pentru crearea unei noi instanțe a clasei. Este apelată înainte de __init__ și determină ce obiect va fi returnat. Este folosită în principal pentru crearea de obiecte unice (Singleton) sau obiecte de tip imutabil (cum ar fi tuple sau str).
class Singleton:
_instance = None
def __new__(cls):
# Verifică dacă deja există o instanță
if cls._instance is None:
# Dacă nu, o creează delegând crearea către clasa părinte (object)
cls._instance = super().__new__(cls)
# Returnează instanța existentă sau cea nou creată
return cls._instance
# Exemple de utilizare
s1 = Singleton()
s2 = Singleton()
# Rezultatul așteptat: True
print(s1 is s2)
Compararea între __new__ și __init__:
-
__new__:- Metodă statică (primul argument este
cls). - Este apelată înainte de crearea instanței.
- Returnează instanța creată.
- Metodă statică (primul argument este
-
__init__:- Metodă de instanță (primul argument este
self). - Este apelată după crearea instanței.
- Nu returnează valori (returnează implicit None).
- Este folosită pentru inițializarea atributelor obiectului creat.
- Metodă de instanță (primul argument este