Sobes.tech
Junior — Middle
93

¿Es posible crear en Python un objeto que no pueda ser modificado después de su inicialización?

Respuesta de la IA

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'

Таким образом, после создания объекта его поля нельзя изменить.