Согласно документации Python 3 , объекты, которые сравниваются одинаково, должны иметь одинаковое значение хеш-функции. Однако, нередко иметь два разных изменяемых объекта, которые в определенный момент времени можно сравнивать, и вы все равно можете использовать их в качестве разных ключей в словаре, например.
В таких случаях можно переопределить методы __eq__()
и __hash__()
, чтобы разрешить это различие, и таким образом нарушить предположение a==b → hash(a)==hash(b)
? Или лучше определить новый метод "equals()"
с той же семантикой? Каковы возможные побочные эффекты разрыва этого отношения?