Я унаследовал код, который выглядит примерно так:
class Clients(IntEnum):
ALICE = 1
BOB = 2
PETER = 3
CHERYL = 4
LARRY = 5
if client_id == 1:
client_info = find_info(Clients.ALICE.value)
elif client_id == 2:
client_info = find_info(Clients.BOB.value)
elif client_id == 3:
client_info = find_info(Clients.PETER.value)
elif client_id == 4:
client_info = find_info(Clients.CHERYL.value)
elif client_id == 5:
client_info = find_info(Clients.LARRY.value)
else:
raise Exception('Unknown client_id.')
Не имея большого опыта работы с перечислением Python, у меня есть горячее желание упростить это до чего-то вроде этого (псевдокод):
if client_id in dict(Clients).keys():
client_info = find_info(client_id)
else:
raise Exception('Unknown client_id.')
Я пробовал Clients.__members__
и Clients.__dict__
, но они не совсем ведут себя так, как я ожидал, возвращая что-то под названием mappingproxy
.
Я могу сделать 'ALICE' in Clients.__members__
, но есть ли эквивалент для значений? Если нет, то есть ли более элегантный способ написать этот кусочек кода?