Почему @dataclass(eq=True) без frozen по умолчанию не хэшируем?
Потому что при наличии __eq__ и изменяемости нарушается инвариант хэша; Python выставляет __hash__ = None. Нужно либо frozen=True (тогда хэш генерится), либо явно определить __hash__/использовать unsafe_hash=True на свой риск.
Библиотека собеса по Python
Post #1231
1.08K
- 👍 3