[Python] Dubbi su hash e set

Daniele Varrazzo piro a develer.com
Dom 4 Maggio 2008 16:45:42 CEST


Pietro Battiston ha scritto:

> In realtà poi al mio codice bastava una modifica minima: evitare che
> "delete" azzeri self.ID: gli oggetti rimangono non immutabili ma il
> valore di hash è dato dalla loro "parte immutabile".

Già, ma in questo caso l'uguaglianza è data dal contenuto (usi set.__eq__). 
Quindi puoi avere due oggetti uguali ma con hash diverso, che è contrario alla 
semantica che dict si aspetta dall'hash (due oggetti uguali devono avere lo 
stesso hash).

Quindi non sono sicuro che tu abbia risolto il tuo problema, a meno che non 
implementi anche:

     def __eq__(self, other):
         return self.ID == other.ID

(e tanto vale usare la funzione id() a questo punto).

-- 
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com


Maggiori informazioni sulla lista Python