我有一个看起来像这样的代码:
def generate_constraints(c):
if c.name == 'multibodypendulum':
con_fnc = MultiBodyPendulum(**c)
其中 c 是包含一堆参数的 OmegaConf 对象。现在我想将 c 中除名称之外的所有参数传递给 MultiBodyPendulum 类(该名称用于标识将其余参数发送到的类)。但是我不知道如何在没有一个参数的情况下制作 c 的副本。 有人对此有好的解决方案吗?
您可以尝试使用
my_dict = c.__dict__
从实例中获取字典,然后使用 pop()
从字典中删除类
类似的东西:
my_dict = c.__dict__
old_name = my_dict.pop("name", None)
con_fnc = MultiBodyPendulum(**my_dict)
这样你可以添加除名称之外的每个参数,如果你想添加不同的名称,你可以将它添加到新实例创建中,如:
con_fnc = MultiBodyPendulum(name="New Name", **my_dict)
DictConfig.copy
创建副本和 del
从 DictConfig
对象中删除属性/项目。
config: DictConfig = ...
config_copy = config.copy()
del config_copy.unwanted_parameter
pendulum = MultiBodyPendulum(**config_copy)