You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否修改Python Enum枚举类的属性值?重赋值触发报错咨询

能否修改Python Enum枚举类的属性值?

问题代码

from enum import Enum

class Number(Enum):
    number = "1"
    
Number.number = "2" # AttributeError: cannot reassign member 'number'

触发的错误

AttributeError: cannot reassign member 'number'


默认情况下,Python标准库中的Enum枚举类成员是不可修改的,这是枚举类型的核心设计特性——保证枚举值的唯一性与不可变性,防止运行时意外修改导致逻辑混乱。

如果确实有动态调整枚举值的需求,有两种可选方案:

  • 使用第三方库aenum,它提供了支持可变的枚举类型,需要额外安装后使用。
  • 通过操作枚举类的__members__字典强行修改值(不推荐),示例代码如下:
from enum import Enum

class Number(Enum):
    number = "1"

# 强行修改枚举成员的值
Number.__members__['number'] = Enum('Number', {'number': '2'})['number']
print(Number.number.value)  # 输出: 2

这种非常规操作会破坏枚举的不可变性设计,可能引发难以预测的问题,不建议在生产环境中使用。

内容的提问来源于stack exchange,提问作者kurmo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 07:55:31