Rich comparison methods don't work in sets?

Aaron Brady castironpi at gmail.com
Sat Jun 20 18:39:00 EDT 2009


On Jun 20, 9:27 am, MRAB <pyt... at mrabarnett.plus.com> wrote:
> 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.

Ooo sneaky.  +1 fancy.

> You would, however, lose the speed advantage that a hash
> gives in narrowing down the possible matches.

Are there /any/ immutable members of the objects?



More information about the Python-list mailing list