如何在Python(类似Javascript的)枚举中定义自定义属性[duplicate]

这个问题在这里已经有答案了
具有属性的python枚举

(7个答案)

两年前关闭的

在JavaScript中,我们可以这样做:

var Color={
黄色:{value:1,displayString:“YELLOW”},
绿色:{值:2,显示字符串:“绿色”},
}

所以我可以打电话:

Color.YELLOW.displayString

在Java中,我们可以这样做:

公共枚举颜色{
黄色(1,“黄色”),
绿色(2,“绿色”),
专用颜色(字符串值,int显示字符串){
这个值=值;
this.displayString=displayString;
}
私有最终整数值;
私有最终字符串显示字符串;
公共字符串getValue(){return value;}
公共字符串getDisplayString(){返回displayString;}
}

所以我可以打电话:

Color.YELLOW.getDisplayString()

经过大量研究,我还没有找到一种在Python中使用内置枚举模块实现这一点的干净方法。我该怎么做

谢谢

这里涉及两个概念:枚举和对可以内联初始化的对象成员的属性样式访问。对于后者,您将需要某种自定义类,但由于您需要非常简单的东西,因此一个名为tuple的就足够了。因此,结合namedtupleenum,这可能是一个解决方案:

从枚举导入枚举
从集合导入namedtuple
Color=namedtuple('Color'、['value'、'displayString']))
类别颜色(枚举):
@财产
def显示字符串(自身):
返回self.value.displayString
黄色=颜色(1,‘黄色’)
绿色=颜色(2,‘绿色’)
打印(颜色.黄色.显示字符串)

发表评论