【发布时间】:2021-02-22 19:02:45
【问题描述】:
目前我有这样的事情:
@dataclass(frozen=True)
class MyClass:
a: str
b: str
c: str
d: Dict[str, str]
...除了dicts 是可变的,这一切都很好,所以我不能使用我的类来键入另一个字典。
相反,我希望字段 d 类似于 FrozenSet[Tuple[str, str]],但我仍然希望有人构造我的类的实例以便能够在构造函数上传递字典,因为这更多直观。
所以我想做类似的事情
@dataclass(frozen=True)
class MyClass:
a: str
b: str
c: str
d: FrozenSet[Tuple[str, str]] = field(init=False)
def __init__(self, a, b, c, d: Dict[str, str]):
self.original_generated_init(a, b, c) # ???
object.setattr(self, 'd', frozenset(d.items())) # required because my dataclass is frozen
我如何实现这一目标?或者,是否有更优雅的方式来实现相同的目标?
【问题讨论】:
标签: python python-3.x python-dataclasses