В последнее время я использую 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.
Кто-нибудь знает лучший / более питонический способ сделать это?
MISSING
просто говорит о том, что это не должно иметь смысла для вашего кода. Если в одном из ваших классов данных было поле со значением по умолчанию, например,MISSING
, это могло вызвать всякого рода странное поведение. Использование его в подобных проверках не вызовет никаких проблем. - person Patrick Haugh   schedule 03.12.2018is not MISSING
и убрал круглые скобки вокруг условия. - person Jacobo de Vera   schedule 23.07.2019