Sto scrivendo una classe che fondamentalmente è un wrapper attorno ad un dizionario con alcune funzionalità extra. Questo dizionario è memorizzato come membro protetto _store
. Ora sto scrivendo un metodo __eq__
per confrontare oggetti della mia classe. Il criterio è, se i dizionari sottostanti sono uguali, gli oggetti sono uguali, quindi l'approccio più semplice sarebbe:
def __eq__(self, other):
return self._store == other._store
Ma questo comporta l'accesso ai membri protetti di un terzo oggetto. Sebbene questo terzo oggetto appartenga alla stessa classe di self
. Possiamo considerare questo incapsulamento di rottura ??
L'altra opzione consiste nel fare un confronto tra i due oggetti, che porta a un codice un po 'meno efficiente e più lungo (confronto tra le chiavi e verifica che le coppie chiave-valore di un oggetto siano uguali a quelle dell'altro oggetto) .