新闻中心

Python3枚举类如何处理重复名称?

2025-12-01
浏览次数:
返回列表
Python枚举类默认不允许同名成员,会抛出TypeError;可通过值相同创建别名实现名称重复,但不生成新成员;使用@unique装饰器可禁止重复值。

python3枚举类如何处理重复名称?

Python 3 的枚举类(Enum)默认不允许在同一个枚举类中定义重复的成员名称。如果尝试这样做,会直接抛出 TypeError 异常。

例如:

from enum import Enum
<p>class Color(Enum):
RED = 1
RED = 2  # 抛出 TypeError: Attempted to reuse key: 'RED'

这说明 Python 枚举在定义阶段就会检查名称冲突,不允许同名成员存在。

如何允许相同的名称?使用 functional API 或别名机制

虽然不能有完全独立的同名成员,但可以通过“别名”方式实现名称重复。当一个枚举成员的值与之前成员相同时,它会被视为前者的别名,不会报错,但也不会创建新成员。

from enum import Enum
<p>class Color(Enum):
RED = 1
CRIMSON = 1  # CRIMSON 是 RED 的别名</p><p>print(Color.RED)        # Color.RED
print(Color.CRIMSON)    # Color.RED
print(Color.CRIMSON is Color.RED)  # True</p>

这里 CRIMSON 不是独立成员,而是 RED 的别名。枚举的迭代只会包含主成员,不包括别名:

<code>for color in Color:
    print(color)
# 输出:
# Color.RED
# (没有 Color.CRIMSON)

强制检测别名:使用 @unique 装饰器

如果你希望禁止任何值重复(即禁止别名),可以使用 @unique 装饰器:

Narration Box Narration Box

Narration Box是一种语音生成服务,用户可以创建画外音、旁白、有声读物、音频页面、播客等

Narration Box 68 查看详情 Narration Box
from enum import Enum, unique
<p>@unique
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 1  # ValueError: duplicate values found in <enum 'Color'>: BLUE -> RED

这样一旦有重复值(即使是别名),都会抛出错误。

动态创建枚举时避免重复名称

使用函数式方式创建枚举时,名称重复同样会引发问题:

Color = Enum('Color', 'RED GREEN RED')  # TypeError: Encountered duplicate field name: 'RED'

应确保传入的名称列表无重复。

若想通过函数式创建带别名的枚举,可使用字典方式:

Color = Enum('Color', {'RED': 1, 'CRIMSON': 1, 'BLUE': 2})
# CRIMSON 是 RED 的别名,不会报错

基本上就这些。Python 枚举的设计本意是名称唯一、语义清晰,重复名称被严格限制,但允许通过值相同的方式创建别名。需要控制是否允许别名时,可用 @unique 来加强校验。

以上就是Python3枚举类如何处理重复名称?的详细内容,更多请关注其它相关文章!


# 是一种  # 普洱网站建设运营哪家好  # https的好处seo  # 沈阳会计网站建设论文  # 剧院网站建设目标和计划  # 网站推广首页怎么写  # 广告推广如何参与营销  # 沛县营销网站推广哪家好  # 未央区正品网站推广便宜  # 水总seo  # 闻道网络seo招聘  # 如何在  # 枚举类  # 如果你  # 就会  # 能做什么  # 如何实现  # 如何使用  # 报错  # 如何处理  # 抛出  # red  # python  # 重复名称 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 极兔快递快件信息查询系统 极兔快递官网运单号追踪  抖音网页版企业服务中心登录入口_抖音网页版企业登录平台  新三国志曹操传110级星符试炼夏侯渊极难攻略  神经网络二分类模型训练异常:高损失与完美验证准确率的排查与修正  qq游戏跨平台入口_qq游戏多设备同步登录  如何提高微信支付的安全性_微信支付安全防护与设置建议  C++如何比较两个字符串_C++ string compare函数与操作符对比  Python中如何避免重复条件判断:利用数据结构实现动态逻辑  微信网页版扫码登录入口 微信网页版二维码登录入口  J*aScript:在map操作中高效处理空数组  J*a递归快速排序中静态变量的状态管理与陷阱  AO3网页版合集入口 Archive of Our Own同人作品浏览指南  大象笔记网页版入口 印象笔记网页版登录入口  MongoDB Aggregation:在嵌套对象数组中精确匹配ObjectId  wps文字怎么插入目录并自动更新_wps文字如何插入目录并自动更新方法  HuggingFaceEmbeddings中向量嵌入维度调整的限制与理解  mysql备份恢复性能优化_mysql备份恢复性能优化方法  怎么去除衣服上的口红印_生活小妙招教你用酒精轻松擦除  《刺客信条:影》PS5 Pro和Switch 2画面对比  React/Next.js中实现列表项的动态选择与移动  高德地图总提示网络异常怎么办 高德地图离线导航设置与网络排查方法  抖音怎么赚钱_抖音创作者变现方法与途径指南  Django AJAX 文件上传教程:解决图片无法保存到模型的常见问题  在J*a中如何使用Exception包装底层异常_异常包装与信息传递方法说明  Fabric模组开发:自定义物品与物品组的现代管理方法  “在文档元素之后找到了标记”是什么错误? 检查并修复XML中多个根元素的3个方法  c++如何使用TBB库进行任务并行_c++ Intel线程构建模块  CSS Box Model与弹性按钮:维持布局稳定的动画实践  ArrayList与LinkedList核心操作的Big-O复杂度分析  python3时间如何用calendar输出?  Python vgamepad库按键模拟:正确使用XUSB_BUTTON常量  抖音创作助手登录入口_抖音创作辅助工具官网直达  高德地图沿途添加点失败如何解决 高德多点规划方法  Win11输入法不见了怎么办_Windows11恢复语言栏显示方法  qq邮箱日历功能怎么用_创建日程与会议邀请的技巧  mysql通配符支持数字匹配吗_mysql通配符能否用于数字匹配的解析  NVIDIA股价11月重挫12%:下月有望好转 但难回5万亿美元巅峰  QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网  漫蛙2正版漫画站 漫蛙2网页版快速访问入口  提升屏幕阅读器对“m”时间单位的播报准确性:HTML与CSS组合解决方案  Golang如何处理RPC请求负载均衡_Golang RPC请求负载均衡策略与实践  一加 14R 快充无反应_一加 14R 充电优化  狙击外星人小游戏开始_狙击外星人小游戏立即开始  抖音从哪里进入网页版_抖音官方入口链接  随机参数递归函数的基准调用次数与时间复杂度探究  基于动态规划的房屋花卉种植最小成本算法详解  使用CSS更改登录屏幕输入框中PNG图标颜色的策略与局限性  淘宝网网页版登录入口 淘宝官方网页版快捷登录  红果短剧网页版官网入口 官方最新网址发布  QQ邮箱登录首页官网地址2026 QQ邮箱官方网页入口 

搜索