验证值是否在Python Enum的值中

2024-09-27 07:33:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我继承了类似这样的代码。在

class Clients(IntEnum):
    ALICE = 1
    BOB = 2
    PETER = 3
    CHERYL = 4
    LARRY = 5

^{pr2}$

我对Python enum没有太多的经验,但我迫切希望将其简化为以下内容(伪代码):

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__,但是这些值有等价的吗?如果没有,有没有更优雅的方式来编写这段代码?在


Tags: 代码ininfoclientiddictclasspeter
2条回答

只能在纯元组(或列表)中存储值,并使用枚举允许按值访问的事实:

values = tuple(item.value for item in Clients)

if client_id in values:
    # do something with Clients(client_id)
else:
    # print message or raise exception

也可以使用字典将值映射到枚举成员:

^{pr2}$
try:
    client_info = find_info(Clients(client_id))
except ValueError:
    # customize error message
    raise Exception('Unknown client_id.')

相关问题 更多 >

    热门问题