df46c8913053e4cb60b3c8c0a076fb53e7b39099
[sfa.git] / sfa / rspecs / elements / element.py
1 class Element(dict):
2
3     fields = {}
4
5     def __init__(self, fields=None, element=None, keys=None):
6         if fields is None: fields={}
7         self.element = element
8         dict.__init__(self, dict.fromkeys(self.fields))
9         if not keys:
10             keys = fields.keys()
11         for key in keys:
12             if key in fields:
13                 self[key] = fields[key] 
14
15
16     def __getattr__(self, name):
17         if hasattr(self.__dict__, name):
18             return getattr(self.__dict__, name)
19         elif hasattr(self.element, name):
20             return getattr(self.element, name)
21         else:
22             raise AttributeError("class Element of type {} has no attribute {}"
23                                   .format(self.__class__.__name__, name))