Предположим, у меня есть коллекция строк, определенная как StrEnum:
Код: Выделить всё
class ValidNames(StrEnum):
OLLY = auto()
ADAM = auto()
ANNA = auto()
Я хочу определить класс, в идеале с помощью Pydantic (для проверки и преобразования типов), который выглядит следующим образом:
Код: Выделить всё
class Assignment(pydantic.BaseModel):
olly: int = 0
adam: int = 0
anna: int = 0
И я хочу иметь возможность получать внешние данные JSON следующим образом:
Код: Выделить всё
external_data = {"olly": 14, "anna": 3}
this_assignment = Assignment(**external_data)
Однако я не хочу явно определять поля Assignment; Я хочу, чтобы он определялся значениями ValidNames, потому что я не хочу менять два бита кода каждый раз, когда члены ValidNames изменяются (или добавляются или удаляются) и по другим причинам. . Есть ли способ сделать это с Pydantic или без него?
РЕДАКТИРОВАТЬ TLDR: По сути, мне просто нужен dict[ValidNames, pydantic.NonNegativeInt] но как класс (со значением по умолчанию 0 для каждого поля), а не как dict. В идеале класс Pydantic.
Подробнее здесь:
https://stackoverflow.com/questions/788 ... ose-fields