Making unhashable object

Olive diolu.remove_this_part at bigfoot.com
Tue Feb 19 08:38:25 EST 2013


I am trying to define a class whose instances should not be hashable, following: http://docs.python.org/2/reference/datamodel.html#object.__hash__

class A:
    def __init__(self,a):
        self.value=a
    __hash__=None
    

Then:

>>> a=A(3)
>>> hash(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not callable
>>> hash([2])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

I would expect the same error in both case and the error is confusing in the first case. What's the proper way of making an object non hashable?

Olive




More information about the Python-list mailing list