class EnumParamName:
def __init__(self, namespace, name):
self.namespace = namespace
self.name = name
def __setitem__(self, key, value):
self.namespace.setdefault('_annotations', {})[key.name] = self.name
self.namespace[self.name] = value
class EnumParamNamespace(dict):
def __getitem__(self, name):
if name in self:
return super().__getitem__(name)
return EnumParamName(self, name)
class EnumParamMeta(type):
@classmethod
def __prepare__(cls, name, bases):
return EnumParamNamespace()
class SearchType(metaclass=EnumParamMeta):
NAME = 'Name'
USER_ID [DEFAULT] = 'User ID'
print(SearchType.NAME)
print(SearchType.USER_ID)
print(SearchType._annotations['DEFAULT'])
Y2xhc3MgRW51bVBhcmFtTmFtZToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lc3BhY2UsIG5hbWUpOgogICAgICAgIHNlbGYubmFtZXNwYWNlID0gbmFtZXNwYWNlCiAgICAgICAgc2VsZi5uYW1lID0gbmFtZQoKICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKICAgICAgICBzZWxmLm5hbWVzcGFjZS5zZXRkZWZhdWx0KCdfYW5ub3RhdGlvbnMnLCB7fSlba2V5Lm5hbWVdID0gc2VsZi5uYW1lCiAgICAgICAgc2VsZi5uYW1lc3BhY2Vbc2VsZi5uYW1lXSA9IHZhbHVlCgpjbGFzcyBFbnVtUGFyYW1OYW1lc3BhY2UoZGljdCk6CiAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgbmFtZSk6CiAgICAgICAgaWYgbmFtZSBpbiBzZWxmOgogICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX2dldGl0ZW1fXyhuYW1lKQogICAgICAgIHJldHVybiBFbnVtUGFyYW1OYW1lKHNlbGYsIG5hbWUpCgpjbGFzcyBFbnVtUGFyYW1NZXRhKHR5cGUpOgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgX19wcmVwYXJlX18oY2xzLCBuYW1lLCBiYXNlcyk6CiAgICAgICAgcmV0dXJuIEVudW1QYXJhbU5hbWVzcGFjZSgpCgpjbGFzcyBTZWFyY2hUeXBlKG1ldGFjbGFzcz1FbnVtUGFyYW1NZXRhKToKICAgIE5BTUUgPSAnTmFtZScKICAgIFVTRVJfSUQgW0RFRkFVTFRdID0gJ1VzZXIgSUQnCgpwcmludChTZWFyY2hUeXBlLk5BTUUpCnByaW50KFNlYXJjaFR5cGUuVVNFUl9JRCkKcHJpbnQoU2VhcmNoVHlwZS5fYW5ub3RhdGlvbnNbJ0RFRkFVTFQnXSk=