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

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