Amy 原创整理|资料核验:2026-10-31
【官方规则】Python Enum 中,不同成员名称可以绑定同一个值;后声明的名称会成为前一个成员的别名。遍历枚举时不会重复列出这些别名,而 __members__ 会保留全部名称的映射,包括别名。
【教学示例】若定义 PENDING = 1、QUEUED = 1、DONE = 2,那么 QUEUED 是 PENDING 的别名。遍历时得到两个成员,但 __members__ 中能找到三个名称。这是语言行为示例,不是实际业务状态设计。
【Amy 的建模建议】先决定“排队中”和“待处理”在业务上是否真的是两个状态。如果它们必须被分别统计、转换或展示,就不要不小心给它们相同的值。若希望任何重复值都直接报错,可以使用文档介绍的 @unique 检查。
调试时同时看名称、值以及 __members__,比只看一次遍历更容易发现别名。别把“代码中写了三个名称”直接当作“运行时存在三个不同成员”。