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

Как написать неизменяемый класс

Для создания неизменяемого класса в Python можно использовать несколько подходов:

  1. Использование __slots__ и запрет изменения атрибутов:
python
class Immutable:
    __slots__ = ('_value',)
    
    def __init__(self, value):
        super().__setattr__('_value', value)
    
    @property
    def value(self):
        return self._value
    
    def __setattr__(self, name, value):
        raise AttributeError("Immutable objects can't be modified")
  1. Наследование от namedtuple:
python
from collections import namedtuple

ImmutablePoint = namedtuple('ImmutablePoint', ['x', 'y'])
  1. Использование @dataclass с frozen=True (Python 3.7+):
python
from dataclasses import dataclass

@dataclass(frozen=True)
class ImmutableData:
    field1: str
    field2: int

Ключевые особенности неизменяемых классов:

  • Нельзя изменять атрибуты после создания
  • Должны быть хешируемыми (реализовывать __hash__)
  • Часто используют свойства (@property) вместо публичных атрибутов
  • Могут кэшироваться и безопасно использоваться как ключи словарей
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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