Sobes.tech
Junior — Middle

Como criar uma classe em Python para que seus objetos sejam imutáveis após a inicialização?

sobes.tech IA

Resposta da IA

Чтобы создать класс в 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

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