Sobes.tech
Junior — Middle

Как да създадем клас в Python, така че обектите му да са неизменяеми след инициализация?

sobes.tech AI

Отговор от 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

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