On Mon, 5 Dec 2022 at 05:11, Rob Cliffe via Python-Dev
<python-dev@python.org> wrote:
>
> Wild suggestion:
>      Make None.__hash__ writable.
> E.g.
>      None.__hash__ = lambda : 0 # Currently raises AttributeError:
> 'NoneType' object attribute '__hash__' is read-only

Hashes have to be stable. If you change the hash of None after it's
been inserted into a dictionary, you'll get all kinds of entertaining
problems.

>>> class X:
...     def __init__(self): self.hash = 0
...     def __hash__(self): return self.hash
...
>>> x = X()
>>> d = {x: "This is x"}
>>> x.hash = 1
>>> for key in d: print(key, key in d)
...
<__main__.X object at 0x7f2d07c6f1c0> False

ChrisA
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/OVVIKTG7CBN6BII4OBGIXWQJJXYCEO3I/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to