Комментарии 4
Не, ну так то использовать .get без необходимости - это стрелять себе в ногу, так что пример несколько притянут за уши )
dataclass жертвует защитой неизменяемости NamedTuple ради гибкости. После создания экземпляра вы можете менять значения полей:
Неправда. Не жертвует, а просто по-умолчанию разрешает изменять поля объекта
И ведь автор рассказал про параметр slots декоратора @dataclasses.dataclass. Но либо забыл, либо не читал документацию дальше, где как раз рассказывается про frozen, который как раз эмулирует запрет измений поля объекта, а также другие параметры - kw_only и др. (init, repr, eq, order, unsafe_hash, match_args, weakref_slot), пусть и не все их них прям полезны, см. https://docs.python.org/3/library/dataclasses.html#dataclasses.dataclass

Скрытая цена словарей Python и три более безопасные альтернативы