gpt4 book ai didi

python - 从 **kwargs 实例化多个对象的 pythonic 方法是什么?

转载 作者:行者123 更新时间:2023-12-03 02:27:42 24 4
gpt4 key购买 nike

我面临以下问题。我有一堆输入,需要编写一个函数来实例化需要这些输入的子集的多个对象(数据类实例)。

所以我有这样的东西:

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)})

显然这是行不通的。有没有办法以Python方式做到这一点?

或者有更好的方法吗?

最佳答案

您可能想看看 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(这是默认选项),它就会自动忽略其他字典键。

关于python - 从 **kwargs 实例化多个对象的 pythonic 方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59543646/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com