Use string variable **kwargs as named argument
我正试图找出一种方法,通过JSON配置文件进行循环,并使用一个键名作为参数名,将其用于使用**kwargs的方法。我创建了一个JSON配置文件,并使用键名作为方法。我只是在键名后面加上"set_uu"来调用正确的方法。我将JSON转换成一个字典来循环遍历任何缺省值。我想通过一个字符串变量将参数名传递给**Kwargs。我试图通过一本词典,但似乎不喜欢。
1 2 3 4 5 6 | user_defaults = config['default_users'][user] for option_name, option_value in user_defaults.iteritems(): method ="set_" + option_name callable_method = getattr(self, method) callable_method(user = user, option_name = user_defaults[option_name]) |
调用上面的callable_方法会传递"option_name"作为Kwarg的实际名称。我想传递它,以便当"shell"=选项名称时,它作为参数名称的字符串名称传递。下面是一个例子。这样我就可以循环使用配置中的任何键,而不用担心我要用任何方法来完成某件事情。
1 2 3 4 5 | def set_shell(self, **kwargs): user = kwargs['user'] shell = kwargs['shell'] ## Do things now with stuff |
任何帮助我都很感激,我是新来的Python,仍然在学习如何做的事情,以Python的方式。
如果我正确理解了你的要求,你可以在主叫端使用
1 | callable_method(user=user, **{option_name: user_defaults[option_name]}) |