fork download
  1. from types import ModuleType
  2.  
  3. def custom_mapping_module(name, mapping):
  4. class _CustomMappingModule(ModuleType):
  5. def __getattr__(self, name):
  6. return mapping[name]
  7. def __setattr__(self, name, value):
  8. mapping[name] = value
  9. def __delattr__(self, name):
  10. del mapping[name]
  11. return _CustomMappingModule(name)
  12.  
  13. from collections import ChainMap
  14.  
  15. c = ChainMap({'a': 1}, {'b': 2})
  16. m = custom_mapping_module('foo', c)
  17. print(m.a)
  18. print(m.b)
  19. del m.a
  20. m.b = 3
  21. print(m.b)
  22. print(c)
  23. print(m.__name__)
  24. print(isinstance(m, ModuleType))
Success #stdin #stdout 0.04s 9648KB
stdin
Standard input is empty
stdout
1
2
3
ChainMap({'b': 3}, {'b': 2})
foo
True