In Python per verificare se due oggetti sono uguali, dobbiamo seguire una procedura specifica.
Se creiamo una semplice classe e verifichiamo l'uguaglianza tra due sue istanze aventi gli stessi attributi con gli stessi valori, il primo tentativo non sortirà l'effetto atteso.
class User:
def __init__(self, name):
self.name = name
user_1 = User('John')
user_2 = User('John')
print(user_1 == user_2) # False
Questo accade perché le due istanze sono memorizzate in due indirizzi di memoria diversi. La nostra classe dovrà invece implementare il metodo dunder __eq()__
che accetta come argomento il riferimento alla seconda istanza su cui effettueremo le verifiche di uguaglianza.
class User:
def __init__(self, name):
self.name = name
def __eq__(self, other):
return self.name == other.name
user_1 = User('John')
user_2 = User('John')
print(user_1 == user_2) # True
other
fa riferimento alla seconda istanza da comparare e il metodo __eq__()
dovrà necessariamente restituire un valore booleano che indicherà il risultato della comparazione.