【问题标题】: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'}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-23
        • 2020-09-28
        • 2021-05-25
        • 2011-07-08
        相关资源
        最近更新 更多