Встречается на собеседованиях • сегодня
Можно ли сделать объект неизменяемым в Python
Да, можно сделать объект неизменяемым в Python. Для этого есть несколько способов:
- Использование
__slots__— ограничивает набор атрибутов, но не делает объект полностью неизменяемым. - Переопределение
__setattr__— запрещает изменение атрибутов после создания. - Использование
@property— контролирует доступ к атрибутам. namedtupleилиdataclass(frozen=True)— встроенные неизменяемые структуры.
Пример с __setattr__:
python
class Immutable:
__slots__ = ('value',) # Ограничиваем атрибуты
def __init__(self, value):
super().__setattr__('value', value) # Обход __setattr__
def __setattr__(self, name, value):
raise AttributeError("Объект неизменяемый")
obj = Immutable(42)
obj.value = 100 # Вызовет AttributeErrorЛучший вариант — dataclass(frozen=True):
python
from dataclasses import dataclass
@dataclass(frozen=True)
class Point:
x: int
y: int
p = Point(1, 2)
p.x = 3 # Вызовет FrozenInstanceError
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы