Словарь в python использует, помимо прочего, и функцию __eq__ для сравнения ключей. Поэтому
- воспользуемся свойством, что hash(int) == int для маленьких int
- изменим функцию сравнения на такую:
def __eq__(self, other):
if isinstance(other, int):
return hash(self) == other
return other and self.key == other.key
И тогда выводом программы будет
-2213746293832839369
value by key 'test_1'
value by key 'test_1'
Но будьте осторожны с такой функцией сравнения можно нарваться на коллизии в самых неожиданных местах