Если я хочу, чтобы атрибут экземпляра был:
- Непубличный (он же имеет одно начальное подчеркивание)
- Быть параметром в подписи
__init__
Обычно я бы сделал так:
class Foo:
def __init__(self, bar: str):
self._bar = bar
foo = Foo(bar="bar") # foo.bar would raise an AttributeError
Однако в dataclasses
я не знаю, как это сделать.
from dataclasses import dataclass
@dataclass
class Foo:
bar: str # This leaves bar as a public instance attribute
Как правильно это сделать в dataclasses.dataclass
?
dataclasses
. Класс данных предназначен быть просто держателем данных (отсюда и название данных), а не чем-то с непрозрачным частным состоянием. - person user2357112 supports Monica   schedule 13.11.2020