我正面临着以下问题。我有一堆输入,需要编写一个函数来实例化几个需要这些输入的子集的对象(数据类实例)。
所以我得到了一些类似的东西:
def create_objects(**kwargs):
# as you can see some attrs are used in different objects.
obj1 = Object1(attr1=kwargs.get("attr1"), attr2=kwargs.get("attr2"))
obj2 = Object2(attr3=kwargs.get("attr3"), attr2=kwargs.get("attr2"))由于所有这些数据类都需要传递给它们的多个属性(在2到10个之间),我想做一些神奇的事情,比如检查Object1类是否在数据类中定义了某个属性:
obj1 = Object1(**{k: v for k, v in kwargs.items() if hasattr(Object1, k)})显然这是行不通的。有没有一种方法可以做到这一点呢?
还是有更好的方法?
发布于 2019-12-31 19:54:55
您可能想看看dacite library。
from dacite import from_dict
def create_objects(**kwargs):
obj1 = from_dict(data_class=Object1, data=kwargs)
obj2 = from_dict(data_class=Object2, data=kwargs)只要将Config.strict设置为False (这是默认选项),它就会自动忽略其他字典键。
https://stackoverflow.com/questions/59543646
复制相似问题