Middle
Cosa fa il metodo new nel contesto del linguaggio Python?
sobes.tech AI
Risposta dell'AI
__new__ - è un metodo di classe responsabile della creazione di una nuova istanza della classe. Viene chiamato prima di __init__ e determina quale oggetto verrà restituito. È principalmente usato per creare oggetti unici (Singleton) o oggetti di tipo immutabile (come tuple o str).
class Singleton:
_instance = None
def __new__(cls):
# Verifica se esiste già un'istanza
if cls._instance is None:
# Se no, la crea delegando la creazione alla classe genitore (object)
cls._instance = super().__new__(cls)
# Restituisce l'istanza esistente o appena creata
return cls._instance
# Esempi di utilizzo
s1 = Singleton()
s2 = Singleton()
# Risultato atteso: True
print(s1 is s2)
Confronto tra __new__ e __init__:
-
__new__:- Metodo statico (il primo argomento è
cls). - Chiamato prima della creazione dell'istanza.
- Restituisce l'istanza creata.
- Metodo statico (il primo argomento è
-
__init__:- Metodo di istanza (il primo argomento è
self). - Chiamato dopo la creazione dell'istanza.
- Non restituisce valori (ritorna implicitamente None).
- Usato per inizializzare gli attributi dell'oggetto creato.
- Metodo di istanza (il primo argomento è