Встречается на собеседованиях • сегодня
Как написать неизменяемый класс
Для создания неизменяемого класса в Python можно использовать несколько подходов:
- Использование
__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")- Наследование от
namedtuple:
python
from collections import namedtuple
ImmutablePoint = namedtuple('ImmutablePoint', ['x', 'y'])- Использование
@dataclassсfrozen=True(Python 3.7+):
python
from dataclasses import dataclass
@dataclass(frozen=True)
class ImmutableData:
field1: str
field2: intКлючевые особенности неизменяемых классов:
- Нельзя изменять атрибуты после создания
- Должны быть хешируемыми (реализовывать
__hash__) - Часто используют свойства (
@property) вместо публичных атрибутов - Могут кэшироваться и безопасно использоваться как ключи словарей

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы