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

Как сделать неизменяемым собственный класс в Python

Чтобы сделать класс неизменяемым, нужно переопределить методы __setattr__ и __delattr__, запрещающие изменение атрибутов после создания объекта. Также можно использовать __slots__ для фиксированного набора атрибутов.

Пример:

python
class Immutable:
    __slots__ = ('x', 'y')  # Фиксируем допустимые атрибуты
    
    def __init__(self, x, y):
        super().__setattr__('x', x)
        super().__setattr__('y', y)
    
    def __setattr__(self, name, value):
        raise AttributeError(f"Can't modify {name} - object is immutable")
    
    def __delattr__(self, name):
        raise AttributeError(f"Can't delete {name} - object is immutable")

Ключевые моменты:

  1. __slots__ ограничивает набор возможных атрибутов
  2. __setattr__ и __delattr__ вызывают исключение при попытке изменения
  3. В __init__ используется super().__setattr__ для обхода ограничений
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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