能否修改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
相关产品推荐
相关产品推荐

