Back to questions
Junior — Middle
70
Возможно ли создать в Python объект, который нельзя было бы изменить после его инициализации?
Answer from AI
sobes.tech AI
В Python можно создать неизменяемый (immutable) объект несколькими способами. Самый простой — использовать встроенные неизменяемые типы, например, кортежи или строки. Для своих классов можно использовать:
namedtupleиз модуляcollections, который создаёт неизменяемые объекты с именованными полями.@dataclass(frozen=True)из модуляdataclasses(Python 3.7+), который делает экземпляры класса неизменяемыми.- Переопределить методы класса так, чтобы запрещать изменение атрибутов после инициализации.
Пример с dataclass:
from dataclasses import dataclass
@dataclass(frozen=True)
class Point:
x: int
y: int
p = Point(1, 2)
# p.x = 3 # вызовет ошибку: cannot assign to field 'x'
Таким образом, после создания объекта его поля нельзя изменить.