'A simple namespace object.'
def __init__(self, d = {}, __prefix = None, **kwargs):
'd is the dictionary or the items-iterable to update my __dict__ with.'
- self.__dict__.update(d)
- self.__dict__.update(kwargs)
+ dct = {}
+ dct.update(d)
+ dct.update(kwargs)
+ self.__dict__.update(dct)
+ self.__keys = set(dct)
self.__prefix = __prefix
def __getattr__(self, key):
# XX ideally these would point a frame higher on the stack.
else:
raise AttributeError("anonymous struct has no member '%s'"
% (key,))
+ def __iter__(self):
+ for i in self.__keys:
+ yield i
def dicts2struct(x, prefix = None):
"""
self.assertEqual(structs.dict.list, dicts['dict']['list'])
self.assertEqual(structs.list[0], dicts['list'][0])
self.assertEqual(structs.list[1].key, dicts['list'][1]['key'])
+ self.assertEqual(set(structs), set(['atom', 'dict', 'list']))
if __name__ == '__main__':
unittest.main()