【发布时间】:2019-06-13 08:56:33
【问题描述】:
现在我终于放弃了对 Python 2 的支持,我正在从 attrs 迁移到 Python 3 dataclasses,有一个问题我特别苦恼。
假设我有一个冻结且可散列的类MyClass,其中一个字段my_field 类型为tuple。
感谢attrs 转换器,我能够提供灵活的API,客户端可以使用list、set 或dict_keys 等各种类型实例化my_field。在创建类之前,它们都会自动转换为tuple。
我可以使用dataclasses 保留此 API 吗?
根据要求,一个小代码示例:
@attr.s(frozen=True, hash=True)
class MyClass:
my_field = attr.ib(default=tuple(), converter=tuple)
print(MyClass([1, 2, 3]))
【问题讨论】:
-
您的问题可能有解决方案。只有您的问题不包含MCVE,而且很难看出您的转换究竟是如何进行的。请提供一个完整的例子。
-
嗨 sophros,我认为在我的问题的上下文中它是不言自明的,因为 attrs 提供了一个转换器参数。尽管如此,我还是添加了一个 sn-p。
标签: python converters python-dataclasses python-attrs