从JSON文件设置python类实例默认变量

时间:2013-06-25 13:43:27

标签: python json class

寻找更优雅(因此)更强大的方法来做到这一点。目前我有一个类在创建时定义了一些默认实例变量。然后我读入一个允许用户覆盖其中一些默认值的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']

结构不能很好地扩展。关于如何以更加Pythonic方式获得所需结果的任何建议?

并非所有变量都需要存在于JSON的dict中,但如果它们存在,则应覆盖卡编码的变量。

1 个答案:

答案 0 :(得分:1)

def __init__(self, ...):
  for key, val in JSON_dict.iteritems():
    setattr(self, '_%s' % (key,), val)