In Python la funzione id() non dovrebbe mai essere utilizzata per la verificare l'uguaglianza tra due oggetti.
La funzione id()
restituisce una rappresentazione dell'identità dell'oggetto come numero intero, che è sempre diversa anche se due o più istanze di una classe hanno esattamente gli stessi attributi e gli stessi valori per tali attributi. A livello di implementazione CPython, è l'indirizzo dell'oggetto in memoria.
Esempio:
class User:
def __init__(self, name):
self.name = name
user_1 = User('John')
user_2 = User('John')
print(id(user_1))
print(id(user_2))
Otterremo ad esempio:
4479462576
4479462480
Come si può notare, la funzione id()
restituisce due valori diversi.