我面临以下问题。我有一堆输入,需要编写一个函数来实例化几个需要这些输入子集的对象(数据类实例)。你知道吗
所以我有这样的想法:
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)})
显然这不管用。有没有一种方法可以用肾盂法?你知道吗
还是有更好的办法?你知道吗
一种解决方案是使用^{} 。你知道吗
例如:
印刷品:
我实现的当前解决方案是以下helper函数,在函数内部(kwargs在闭包中):
这使我能够做到:
在我看来还不错。你知道吗
您可能想看看dacite library。你知道吗
只要
Config.strict
设置为False
(这是默认选项),它就会自动忽略其他字典键。你知道吗相关问题 更多 >
编程相关推荐