Nag*_*S N 5 python python-3.7 python-dataclasses
如何使用字典更新数据类的字段?
例子:
@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'}
Run Code Online (Sandbox Code Playgroud)
我想做类似的事情
sample.update(updated_values)
Run Code Online (Sandbox Code Playgroud)
bb1*_*328 10
一种方法是创建一个小类并继承它:
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
Run Code Online (Sandbox Code Playgroud)
如果您想了解有关 getattr 和 setattr 的更多信息,可以阅读此内容
小智 7
如果您有基本数据类,则更新底层__dict__似乎可行:
sample.__dict__.update({ 'field1': 'value1' })
Run Code Online (Sandbox Code Playgroud)