JKPeck <[EMAIL PROTECTED]> wrote:

> Thanks for the advice.  Once assured that __hash__ etc was the right
> route, I found that using hash() instead of object.__hash__() gave me
> stable hash valules.  (I am hashing strings that I know to be unique.)
> 
> The "no luck" situation was that a set would accept the same object
> multiple times, not recognizing that it was truly the same object.

Your problem may have been exactly that you were misunderstanding the
nature and functionality of object.__hash__:

>>> x='guess what'
>>> id(x)
360720
>>> object.__hash__(x)
360720

As you see, what it does is return the id() of the object (that's how
objects are hashed -- if they don't implement __eq__ or __cmp__,
equality comparisons also go to the id()'s, so things work;-) -- unless
their type/class overrides __hash__).  Of course, by going directly to
object.__hash__ you're explicitly *avoiding* the override, so...


Alex
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to