fork download
  1. class EnumParamName:
  2. def __init__(self, namespace, name):
  3. self.namespace = namespace
  4. self.name = name
  5.  
  6. def __setitem__(self, key, value):
  7. self.namespace.setdefault('_annotations', {})[key.name] = self.name
  8. self.namespace[self.name] = value
  9.  
  10. class EnumParamNamespace(dict):
  11. def __getitem__(self, name):
  12. if name in self:
  13. return super().__getitem__(name)
  14. return EnumParamName(self, name)
  15.  
  16. class EnumParamMeta(type):
  17. @classmethod
  18. def __prepare__(cls, name, bases):
  19. return EnumParamNamespace()
  20.  
  21. class SearchType(metaclass=EnumParamMeta):
  22. NAME = 'Name'
  23. USER_ID [DEFAULT] = 'User ID'
  24.  
  25. print(SearchType.NAME)
  26. print(SearchType.USER_ID)
  27. print(SearchType._annotations['DEFAULT'])
Success #stdin #stdout 0.04s 9648KB
stdin
Standard input is empty
stdout
Name
User ID
USER_ID