如何移除枚举(Enum)名称中的下划线?解决递归错误问题
修复枚举名称去下划线的递归错误问题
问题出在你重写name属性时,方法内部调用self.name会触发该property的递归调用,导致无限循环报错。
直接访问Enum实例存储原始名称的_name_属性就能解决这个问题,修改后的代码如下:
from enum import Enum class A(Enum): ABC = '0' OTC = '1' _1T = '2' @property def name(self) -> str: return self._name_.replace('_', '')
测试验证:
- 调用
A._1T.name会返回1T,成功移除了下划线 - 调用
A.ABC.name返回ABC,不受影响
也可以通过super()获取父类的name属性来实现,效果一致:
@property def name(self) -> str: return super().name.replace('_', '')
内容的提问来源于stack exchange,提问作者user16965639
相关产品推荐
相关产品推荐

