I'm guessing it might be this from https://docs.python.org/3.6/reference/datamodel.html#object.__hash__

A class that overrides __eq__() and does not define __hash__() will have its __hash__() implicitly set to None.


Python2:

>>> class X(tuple):
...     def __eq__(self, other): return False
>>> hash(X())
3527539

Python 3:

>>> class X(tuple):
...     def __eq__(self, other): return False
>>> hash(X())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'X'


Interestingly, Python 2 also acts like this for *extension types* (such as Cython cdef classes) but not for ordinary Python classes.

--
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to