【发布时间】:2019-05-04 12:19:17
【问题描述】:
我最近一直在使用 python 3.7,并且正在寻找利用新数据类的方法。基本上我有一个方法可以遍历数据类字段并检查它们是否具有默认值:
from dataclasses import fields, MISSING
@classmethod
def from_json(cls)
datacls_fields = fields(cls)
for field in datacls_fields:
if (field.default != MISSING):
#...
但在官方文档中,它说:
MISSING 值是用于检测的标记对象 如果提供了 default 和 default_factory 参数。这 使用哨兵是因为 None 是默认的有效值。 无代码 应该直接使用 MISSING 值。
有人知道更好/更pythonic的方法吗?
【问题讨论】:
-
也许pythonic的问题可能是:为什么需要找出具有默认值的字段?
-
我认为反对使用
MISSING的警告只是说它不应该对您的代码有意义。例如,如果您的某个数据类有一个默认值为MISSING的字段,则可能会导致各种奇怪的行为。在这样的检查中使用它不会导致任何问题。 -
我认为,正如@PatrickHaugh 所说,您的代码是正确的,并没有真正做任何危险的事情。如果有的话,为了让这更 Pythonic,我会使用
is not MISSING并在条件周围去掉括号。
标签: python python-3.x python-dataclasses