diff --git a/src/radical/utils/typeddict.py b/src/radical/utils/typeddict.py index 25268695..a160f582 100644 --- a/src/radical/utils/typeddict.py +++ b/src/radical/utils/typeddict.py @@ -158,13 +158,11 @@ def __init__(self, from_dict=None, **kwargs): if self._deep: - self.__dict__['_data'] = copy.deepcopy(self._defaults) + self.update(copy.deepcopy(self._defaults)) else: - self.__dict__['_data'] = dict() - self.__dict__['_data'].update(self._defaults) + self.update(self._defaults) - if from_dict: - self.update(from_dict) + self.update(from_dict) if kwargs: self.update(kwargs) @@ -230,10 +228,7 @@ def __getitem__(self, k): return self._data[k] def __setitem__(self, k, v): - if self._check : - self._data[k] = self._verify_setter(k, v) - else: - self._data[k] = v + self._data[k] = self._verify_setter(k, v) def __delitem__(self, k): del self._data[k] @@ -300,6 +295,8 @@ def popitem(self): def __getattr__(self, k): if k == '_data': + if '_data' not in self.__dict__: + self.__dict__['_data'] = dict() return self.__dict__['_data'] if k.startswith('__'): @@ -317,10 +314,7 @@ def __setattr__(self, k, v): if k.startswith('__'): return object.__setattr__(self, k, v) - if self._check : - self._data[k] = self._verify_setter(k, v) - else: - self._data[k] = v + self._data[k] = self._verify_setter(k, v) def __delattr__(self, k):