Mutable objects which define __hash__ (was Re: Why are tuples immutable?)

Antoon Pardon apardon at
Thu Dec 23 11:56:42 CET 2004

Op 2004-12-22, Nick Coghlan schreef <ncoghlan at>:
>> I'm currently not under the impression I'm able to. Sure I could
>> implement the above mentioned classes, but my feeling is that
>> should I present them here, nobody would be waiting for them.
>> Not because they would be unusfull, but because they go against
>> the current paradigm.
> As I see it, you have a couple of courses available:
> If you're into pain, consider further developing the 'rehash' idea, and the 
> option of adding hash methods to the mutable builtins. You've persuaded me that 
> the idea is not entirely unreasonable. However, I mention pain, because you'd 
> still have work to do persuading enough people (including me) that the 
> additional hard to detect bugs this adds to the language would be worth it.
> I don't really recommend that option.

How about this:

  from UserDict import UserDict

  class RehashableDict(UserDict):

    def rehash(self):

      dic = {}
      for k,v in
        dic[k] = v = dic

This works as far as I have tested things out.

I don't think I would recommend adding hash methods to mutable builtins.
Storing keys by identity or value both can make sense for these kind
of objects. And since python prefers not to guess I think it is a good thing
there is no default hash for mutable objects.

Antoon Pardon

More information about the Python-list mailing list