Типы, которые определяют `__eq__`, не подлежат чтению?

У меня была странная ошибка при переносе функции на форк Python 3.1 моей программы. Я сузил это до следующей гипотезы:

В отличие от Python 2.x, в Python 3.x, если объект имеет__eq__ метод это автоматически unhashable.

Это правда?

Вот'Что происходит в Python 3.1:

>>> class O(object):
...     def __eq__(self, other):
...         return 'whatever'
...
>>> o = O()
>>> d = {o: 0}
Traceback (most recent call last):
  File "", line 1, in 
    d = {o: 0}
TypeError: unhashable type: 'O'

Последующий вопрос: как мне решить мою личную проблему? У меня есть объектChangeTracker который хранитWeakKeyDictionary это указывает на несколько объектов, давая каждому значение их дамп соления в определенный момент времени в прошлом. Всякий раз, когда существующий объект регистрируется, трекер изменений сообщает, идентичен ли его новый пикл своему старому, и, следовательно, говорит, изменился ли объект за это время. Проблема в том, что теперь я могуt даже проверить, находится ли данный объект в библиотеке, потому что это вызывает исключение того, что объект не подлежит обработке. (Потому что это имеет__eq__ метод.) Как я могу обойти это?

Ответы на вопрос(4)

Ваш ответ на вопрос