Rich comparison methods don't work in sets?

MRAB python at mrabarnett.plus.com
Sat Jun 20 18:27:45 CEST 2009


Gustavo Narea wrote:
> Hello again, everybody.
> 
> Thank you very much for your responses. You guessed right, I didn't
> use the __hash__ method (and I forgot to mention that, sorry).
> 
> And unfortunately, I think I can't make them hashable, because the
> objects are compared based on their attributes, which are in turn
> other kind of objects compared based on other attributes. All these
> class instances are compared with __eq__/__ne__ and they wrap
> relatively complex data which would be hard to attempt to represent
> them unambiguously using a 32-bit integer. That's why I'm afraid I
> cannot use hashables.
> 
> I guess I'll have to use something like the function of my first
> post. :(
> 
A hash doesn't have to be unambiguous. It's just a way to reduce the
number of equality checks that have to be made.

Could you create a hash from a tuple of attributes?

If all else fails you could define a hash function that returns a
constant. You would, however, lose the speed advantage that a hash
gives in narrowing down the possible matches.



More information about the Python-list mailing list