X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Frspecs%2Felements%2Felement.py;h=36ad12f73b43870fea8d4ee2cd7342f5fd98b290;hb=387224b6673a3f256ff9ff4fc1e2e0b6beda9897;hp=6757f8a8c25070d56808c92c13b8ba3b6fe5d074;hpb=e494b36a8d4b0924e8591d52662450c32a20615d;p=sfa.git diff --git a/sfa/rspecs/elements/element.py b/sfa/rspecs/elements/element.py index 6757f8a8..36ad12f7 100644 --- a/sfa/rspecs/elements/element.py +++ b/sfa/rspecs/elements/element.py @@ -2,8 +2,21 @@ class Element(dict): fields = {} - def __init__(self, fields={}, element=None): + def __init__(self, fields=None, element=None, keys=None): + if fields is None: fields={} self.element = element - dict.__init__(self, self.fields) - self.update(fields) + dict.__init__(self, dict.fromkeys(self.fields)) + if not keys: + keys = fields.keys() + for key in keys: + if key in fields: + self[key] = fields[key] + + def __getattr__(self, name): + if hasattr(self.__dict__, name): + return getattr(self.__dict__, name) + elif hasattr(self.element, name): + return getattr(self.element, name) + else: + raise AttributeError, "class Element has no attribute %s" % name