Обновите поля класса данных из dict в python - PullRequest
1 голос
/ 25 апреля 2020

Как я могу обновить поля класса данных, используя dict?

Пример :

@dataclass
class Sample:
    field1: str
    field2: str
    field3: str
    field4: str

sample = Sample('field1_value1', 'field2_value1', 'field3_value1', 'field4_value1')
updated_values = {'field1': 'field1_value2', 'field3': 'field3_value2'}

Я хочу сделать что-то вроде

sample.update(updated_values)

1 Ответ

1 голос
/ 25 апреля 2020

Одним из способов является создание небольшого класса и наследование от него:

class Updateable(object):
    def update(self, new):
        for key, value in new.items():
            if hasattr(self, key):
                setattr(self, key, value)

@dataclass
class Sample(Updateable):
    field1: str
    field2: str
    field3: str
    field4: str

Вы можете прочитать this , если хотите узнать больше о getattr и setattr

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...