classnamespace.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from types import SimpleNamespace
  2. class ClassNamespace(SimpleNamespace):
  3. def __init__(self, dic=None):
  4. if dic is None:
  5. return
  6. # if type(dic) is dict:
  7. for key in dic:
  8. setattr(self, key, self.envelop(dic[key]))
  9. # else:
  10. # raise CatalogError("ClassNamespace AIUTO!")
  11. def envelop(self, elem):
  12. if type(elem) is dict:
  13. return ClassNamespace(elem)
  14. elif type(elem) is list:
  15. return [self.envelop(x) for x in elem]
  16. else:
  17. return elem
  18. # if d is not None:
  19. # for key in d:
  20. # if type(d[key]) is dict:
  21. # setattr(self, key, ClassNamespace(d[key]))
  22. # else:
  23. # setattr(self, key, d[key])
  24. def __contains__(self, x):
  25. return x in self.__dict__
  26. def __json__(self, x):
  27. return self.__dict__
  28. def copy(self):
  29. return self.__dict__.copy()
  30. def classcopy(self):
  31. dummy = ClassNamespace()
  32. dummy.__dict__.update(self.__dict__)
  33. return dummy
  34. def dictcopy(self):
  35. return self.__dict__.copy()
  36. def update(self, oth):
  37. self.__dict__.update(oth.__dict__)