【问题标题】:Python dataclasses: omit field from asdictPython 数据类:从 asdict 中省略字段
【发布时间】:2020-05-05 06:00:14
【问题描述】:

我已经开始大量使用 python 数据类模块并且发现它非常有用。我特别喜欢可以在每个字段上设置的标志,允许切换比较、初始化等。

然而,我经常发现有一个字段我希望从类的 asdict 行为中省略。在某些情况下,这可能通过 dict_factory 参数实现,但有时会发生字段会导致 asdict 函数在通过使用 dict_factory 将其省略之前引发异常。

其他人可以提出一个干净的方法来做到这一点吗?添加到数据类模块不是一个有用的附加标志吗?

【问题讨论】:

  • 完全使用asdict 是一个非常可疑的举动,具有奇怪的、不一致的隐式副本,并且如果您更改其他类以使用或不使用dataclass,行为会发生变化。跨度>
  • 你能给出一个你不希望它们包括在内的理由吗?

标签: python python-3.x python-dataclasses


【解决方案1】:

您可以将自定义元数据添加到 field(metadata={"include_in_dict":True}) 等字段,并且在 dict_factory 中,您可以先检查这一点,并在需要时跳过该字段。

if field_.metadata.get("include_in_dict", False):
    continue

【讨论】:

  • 谢谢你,我试试看。
猜你喜欢
  • 1970-01-01
  • 2019-11-12
  • 2022-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多