从 python 中的字典更新数据类字段
Update dataclass fields from a dict in python
如何使用字典更新数据类的字段?
示例:
@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)
一种方法是制作一个小的 class 并继承它:
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
如果您想了解有关 getattr 和 setattr 的更多信息,可以阅读 this
您不必创建新的 class。您只需执行以下操作:
@dataclass
class Sample:
field1: str
field2: str
field3: str
field4: str
def update(self, new):
for key, value in new.items():
if hasattr(self, key):
setattr(self, key, value)
sample = Sample('field1_value1', 'field2_value1', 'field3_value1', 'field4_value1')
updated_values = {'field1': 'field1_value2', 'field3': 'field3_value2'}
sample.update(updated_values)
编辑:修正了拼写错误 class Sample(Updateable):
-> class Sample:
如果您有基本数据类,则更新基础 __dict__
似乎可行:
sample.__dict__.update({ 'field1': 'value1' })
如何使用字典更新数据类的字段?
示例:
@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)
一种方法是制作一个小的 class 并继承它:
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
如果您想了解有关 getattr 和 setattr 的更多信息,可以阅读 this
您不必创建新的 class。您只需执行以下操作:
@dataclass
class Sample:
field1: str
field2: str
field3: str
field4: str
def update(self, new):
for key, value in new.items():
if hasattr(self, key):
setattr(self, key, value)
sample = Sample('field1_value1', 'field2_value1', 'field3_value1', 'field4_value1')
updated_values = {'field1': 'field1_value2', 'field3': 'field3_value2'}
sample.update(updated_values)
编辑:修正了拼写错误 class Sample(Updateable):
-> class Sample:
如果您有基本数据类,则更新基础 __dict__
似乎可行:
sample.__dict__.update({ 'field1': 'value1' })