Junior — Middle
Python'da qanday qilib sinf yaratish mumkin, uning ob'ektlari boshlang'ichdan keyin o'zgarmas bo'lsin?
sobes.tech AI
AIdan javob
Чтобы создать класс в Python с неизменяемыми после инициализации объектами, можно использовать несколько подходов:
- Переопределить метод
__setattr__, чтобы запретить изменение атрибутов после инициализации. - Использовать
@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
Такой класс создаст объекты, у которых нельзя изменить поля после создания.