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

标签 python python-dataclasses

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

所以我有这样的东西:

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/

相关文章:

python - NLTK 是否实现了 TF-IDF?

python - 在新选项卡中打开链接并在选项卡之间切换(Selenium WebDriver + Python)

python - Django url 重定向不起作用

python - 在 Python 数据类中使用默认 uuid 值

python - 数据类 : Require at least one value to be set in grouping of model fields

Python dataclasses_json : can I store many references to one object?

终端中的 Python 编译

python - 来自特定 ISO 格式的 Pandas 日期时间转换

python - 数据类中的类属性和元类

python-3.x - 在 Python 中实现 Typescript 接口(interface)