Код: Выделить всё
class C:
def __init__(self, stuff: int):
self._stuff = stuff
@property
def stuff(self) -> int:
return self._stuff
Код: Выделить всё
c = C(stuff=10)
print(c.stuff) # prints 10
Код: Выделить всё
c.stuff = 2
AttributeError: невозможно установить атрибут
Как я могу получить идентичное поведение, используя класс данных? Если бы я хотел также иметь сеттер, я мог бы сделать:
Код: Выделить всё
@dataclass
class DC:
stuff: int
_stuff: int = field(init=False, repr=False)
@property
def stuff(self) -> int:
return self._stuff
@stuff.setter
def stuff(self, stuff: int):
self._stuff = stuff
Подробнее здесь: https://stackoverflow.com/questions/612 ... -read-only