Nick Coghlan <[EMAIL PROTECTED]> wrote:
[quoting from the Reference Manual]
> If a class defines mutable objects and implements a __cmp__() 
> or __eq__() method, it should not implement __hash__(), since the dictionary 
> implementation requires that a key's hash value is immutable (if the object's 
> hash value changes, it will be in the wrong hash bucket)."

I know that's what it says, but I don't think it's good advice.  All 
that is really required is that __hash__() always returns the same value 
over the lifetime of the object, and that objects which __cmp__() the 
same always return the same hash value.  That's it.  That's all a 
dictionary cares about.

Making the object immutable is certainly the easiest way to achieve that 
goal, but it's not the only way.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to