В Python я знаю, что значение __hash__
, возвращаемое для данного объекта, должно быть одинаковым для времени жизни этого объекта. Но, из любопытства, что произойдет, если это не так? Какой хаос это может вызвать?
class BadIdea(object):
def __hash__(self):
return random.randint(0, 10000)
Я знаю, что __contains__
и __getitem__
будут вести себя странно, а dicts и sets будут действовать нечетно из-за этого. Вы также можете получить "осиротевшие" значения в dict/set.
Что еще может произойти? Может ли это сбой интерпретатора или повреждение внутренних структур?