[Python-Dev] Caching tuple hashes

Guido van Rossum guido at python.net
Mon Aug 4 14:11:24 EDT 2003


On Mon, Aug 04, 2003 at 06:14:15PM +1000, Andrew Bennetts wrote:
> 
> * Tuples can contain badly-behaved mutables, e.g.:
> 
> >>> class X:
> ...     x = 1       
> ...     def __hash__(self):    
> ...         return self.x 
> ... 
> >>> x = X()
> >>> t = (x,)
> >>> hash(t)
> -1660579480
> >>> X.x = 2
> >>> hash(t)
> -1660579477

No, that's not a reason not to do this.  The problem is the responsibility
of class X; a tuple can assume that objects have constant hashes (since
dict lookup also makes this assumption).

--Guido van Rossum



More information about the Python-Dev mailing list