首页 > 解决方案 > Python 数据类:从 asdict 中省略字段

问题描述

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

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

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

标签: pythonpython-3.xpython-dataclasses

解决方案


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

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

推荐阅读