]> granicus.if.org Git - python/commit
Fix of SF bug #475877 (Mutable subtype instances are hashable).
authorGuido van Rossum <guido@python.org>
Mon, 3 Dec 2001 16:32:18 +0000 (16:32 +0000)
committerGuido van Rossum <guido@python.org>
Mon, 3 Dec 2001 16:32:18 +0000 (16:32 +0000)
commitdbb53d99189075522eecc87723292c85aee15388
tree1131490f1290ba22acf8505c9d1e7aa25308336b
parentcb33165ca2f8c1493b511bb7b38b44ede4211280
Fix of SF bug #475877 (Mutable subtype instances are hashable).
Rather than tweaking the inheritance of type object slots (which turns
out to be too messy to try), this fix adds a __hash__ to the list and
dict types (the only mutable types I'm aware of) that explicitly
raises an error.  This has the advantage that list.__hash__([]) also
raises an error (previously, this would invoke object.__hash__([]),
returning the argument's address); ditto for dict.__hash__.

The disadvantage for this fix is that 3rd party mutable types aren't
automatically fixed.  This should be added to the rules for creating
subclassable extension types: if you don't want your object to be
hashable, add a tp_hash function that raises an exception.

Also, it's possible that I've forgotten about other mutable types for
which this should be done.
Lib/test/test_descr.py
Objects/dictobject.c
Objects/listobject.c