Вопрос по hash, python – Использование идентификатора объекта в качестве хэша для объектов в Python

10

Разумно ли использовать объектid в качестве хеш-ключа (через__hash__) чтобы иметь возможность хешировать в противном случае изменчивый объект для одного экземпляра программы? Использование атрибутов объекта было бы лучше, но онивсе изменчивы и могут меняться.

Это произошло со мной, глядя наНаборы экземпляров и я'мне интересно, если этомудрый

Ваш Ответ

2   ответа
14

__eq__ (и предположительно__ne__! -) в соответствии с этим. IOW, этохорошо, пока тыхорошо сa==b означает точно так же, какa is b! -)

Благодарю. Ваше второе предложение проясняет это довольно хорошо. Noufal Ibrahim
6

не могут быть объяснены по уважительной причине: они являются изменчивыми коллекциями.

Для коллекций целесообразно иметь отношение равенства (как определено__eq__()) на основе равенства их содержания. Это и требование для__hash__() чтобы быть в соответствии с равенством, конечно, сделал бы__hash__() изменяемый, что было бы ужасно для коллекций, содержащих такие объекты.

Таким образом, вы можете сделать это, но это будет стоить вам отношения равенства на основе контента.

Похожие вопросы