Встречается на собеседованиях • сегодня

Как в Python защитить объект от изменения

В Python можно защитить объект от изменения несколькими способами:

  1. Использование кортежей - они неизменяемы:
python
immutable_obj = (1, 2, 3)
  1. Заморозка множества с помощью frozenset:
python
frozen_set = frozenset([1, 2, 3])
  1. Декоратор @property для контроля доступа к атрибутам класса:
python
class Protected:
    def __init__(self):
        self._value = 42
    
    @property
    def value(self):
        return self._value
  1. Переопределение __setattr__ для полного запрета изменений:
python
class Immutable:
    def __setattr__(self, name, value):
        raise AttributeError("Объект неизменяем")

Для словарей можно использовать types.MappingProxyType:

python
from types import MappingProxyType
d = {'a': 1}
protected_dict = MappingProxyType(d)

Важно: Python не имеет строгой неизменяемости - при желании атрибуты можно изменить через __dict__ или другие хаки.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы