Встречается на 1% собеседований по Python
Как написать неизменяемый класс
Для создания неизменяемого класса в 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
интервью вопросы и ответы