Junior — Middle
Hogyan hozzunk létre egy osztályt Pythonban, hogy az objektumai az inicializálás után változatlanok legyenek?
sobes.tech MI
Válasz az MI-től
Чтобы создать класс в 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
Такой класс создаст объекты, у которых нельзя изменить поля после создания.