【问题标题】:How do I copy class attributes from a dict?如何从字典中复制类属性?
【发布时间】:2022-01-07 23:55:40
【问题描述】:
在 Mac 上使用 python 3.6
我有以下类,我想从字典中实例化它
from pydantic import BaseModel
class MyModel(BaseModel):
brand: Optional[str]
我需要从字典中复制属性
def copy_from_make_model(self, data: dict) -> None:
self.brand = data['brand']
dict 没有品牌密钥会怎样?
我是否需要检查每个 MyModel 属性的品牌密钥是否存在?
Pythonic 的方法是什么?
【问题讨论】:
标签:
python-3.x
dictionary
【解决方案1】:
如果数据字典没有品牌键,这将设置brand=""。
def copy_from_make_model(self, data):
self.brand = data.get("brand", "")
【解决方案2】:
您可以使用 Pydantic 的 dict 方法来完成相同的操作,而不是创建自己的函数来进行转换。
class MyModel(BaseModel):
brand: Optional[str]
my_model = MyModel(brand="test brand")
my_model_dict = my_model.dict()
print(my_model_dict)
这将给出以下结果。
{'brand': 'test brand'}