Определите класс (например, класс данных или Pydantic BaseModel или TypedDict), поля которого определяются набором строкPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Определите класс (например, класс данных или Pydantic BaseModel или TypedDict), поля которого определяются набором строк

Сообщение Anonymous »

Предположим, у меня есть коллекция строк, определенная как 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»