В зависимости от языка программирования и конкретной ситуации для защиты изменяемых значений по умолчанию в классах данных могут использоваться разные подходы.
В Java для защиты переменных, методов и классов от изменений применяют модификатор final. 2 Переменная, объявленная с этим модификатором, после инициализации становится неизменной. 2
В Python для защиты изменяемых аргументов по умолчанию используют значение None по умолчанию и присваивают изменяемое значение в теле функции. 3
В DataClass в Python по умолчанию поля класса изменяемые, но их можно сделать и неизменяемыми, задав значение True для параметра frozen. 4
Также в Java для защиты переменных от изменения извне используют модификатор private: такие переменные недоступны для других классов, включая классы-наследники. 2