我有一个从json加载的命名元组
with open(self._json_path) as data_file:
self._dom = json.load(data_file, object_hook=lambda d: namedtuple('X', d.keys())(*d.values()))
我通过引用访问此对象树的内容
self._dom.my_var.A
但是,如果没有设置JSON中的可选属性,则尝试访问它们时会遇到异常。
所以
self._dom.my_var.B
如果在JSON文件中未定义B,则无法工作。
为此,我想提供一种保存方法,通过
__getitem__
. 如果没有定义,则不返回任何值。
这段代码不起作用,因为self.dom.key查找一个名为“key”的属性,即使在对象树中定义了一个对象,也不会在属性错误中运行。
def __getitem__(self, key):
try:
return self.dom.key
except AttributeError:
return None