正在寻找一种更优雅(因此)更健壮的方法来实现这一点。目前,我有一个类,它在创建时定义了一些默认的实例变量。然后,我读取了一个JSON文件,该文件允许用户覆盖其中一些默认值。所有这些代码都在类的init方法中。
# Instance variables defaults
self._a = 'A - original'
self._b = 'B - original'
self._c = 'C - original'
# line below gives example of dict that gets returned from the JSON read
JSON_dict = {'a': "A-overide", 'c': "C-overide"}
# Inelegent code:
if "a" in JSON_dict:
self._a = JSON_dict['a']
if "b" in JSON_dict:
self._b = JSON_dict['b']
if "c" in JSON_dict:
self._c = JSON_dict['c']
这个结构的伸缩性不好。关于如何以更Python的方式获得期望的结果,有什么建议吗?
并非所有变量都需要存在于JSON的dict中,但如果存在,则应覆盖卡片编码的变量。
def __init__(self, ...):
for key, val in JSON_dict.iteritems():
setattr(self, '_%s' % (key,), val)