Sobes.tech
Junior — Middle
72

Каким образом создать класс в Python, чтобы его объекты были неизменяемыми после инициализации?

Answer from AI

sobes.tech AI

Чтобы создать класс в Python с неизменяемыми после инициализации объектами, можно использовать несколько подходов:

  1. Переопределить метод __setattr__, чтобы запретить изменение атрибутов после инициализации.
  2. Использовать @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  # Это вызовет ошибку: FrozenInstanceError

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