Files
igncore/core/dict_object.py

26 lines
774 B
Python

class DictObject(dict):
def __init__(self, *args, **kw):
super().__init__(*args, **kw)
def get_value(self, name):
val = self[name]
# convert dict to DictObject
if not isinstance(val, DictObject) and isinstance(val, dict):
self[name] = DictObject(val)
val = self[name]
# convert list of dicts to list of DictObjects
elif isinstance(val, list):
for k, v in enumerate(val):
if not isinstance(v, DictObject) and isinstance(v, dict):
self[name][k] = DictObject(v)
val = self[name]
return val
def __getattr__(self, name):
return self.get_value(name)
def __setattr__(self, key, value):
self[key] = value