TGViewer
Python: задачки и вопросы Python: задачки и вопросы @quiz_python · 6.94K subscribers
Post #4872 274
Python: задачки и вопросы
Развёрнутое пояснение:

1. Декоратор dataclass(frozen=True) генерирует для Client методы __init__, __repr__, __eq__ и __hash__.

2. __eq__ у frozen dataclass сравнивает все поля экземпляров. У a name='a', у b name='b', поэтому a!= b.

3. __hash__ тоже строится по всем полям, поэтому hash(a)!= hash(b).

4. Словарь cache размещает a и b в разные корзины. После cache[a] = 'old' и cache[b] = 'new' в словаре два элемента.

5. Обращение cache[a] возвращает значение, связанное с a, то есть 'old'. Итоговый вывод: old 2.

Почему это важно: dataclass часто используют как ключи dict или элементы set, и поведение зависит от того, какие поля входят в равенство. frozen=True решает проблему изменяемости, но не помогает, если логика идентичности подразумевает только часть полей. В реальном коде это приводит к дублям в кеше, утечке памяти и неверным попаданиям при поиске.
  • ✍ 1
More from @quiz_python
  1. Sep 14, 2026А вы уже забрали свой подарок ко Дню программиста? Мы в Tproger вместе с нашими друзьями с…
  2. Aug 30, 2026Развёрнутое пояснение: 1. Создаётся список batch с двумя разными словарями. 2. Вызов enric…
  3. Aug 30, 2026Post #4875
  4. Aug 30, 2026Развёрнутое пояснение: 1. Создаётся внутренний список ['', '', ''] — три пустые строки. 2.…
  5. Aug 30, 2026Post #4873
  6. Aug 29, 2026Post #4871
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →