用于替代枚举的pythonic

时间:2009-02-08 04:04:44

标签: python enums

在我的python脚本中,我正在解析用户创建的文件,通常会出现一些错误,有些情况我警告用户要更清楚。在c中我将有一个像eAssignBad,eAssignMismatch,eAssignmentSignMix(与无符号混合的符号)的枚举。然后我会查看值以打印错误或警告消息。我将warningMsg链接到一个地方,我喜欢名称的可读性而不是文字值。什么是pythonic替代?

重复How can I represent an 'Enum' in Python?

2 个答案:

答案 0 :(得分:4)

这是迄今为止我发现的最好的枚举实现之一: http://code.activestate.com/recipes/413486/

但是,我敢问,你需要一个枚举吗?

你可以有一个带有错误消息的简单dict和一些带有错误号的整数常量。

eAssignBad = 0
eAssignMismatch = 1
eAssignmentSignMix = 2

eAssignErrors = {
    eAssignBad: 'Bad assignment',
    eAssignMismatch: 'Mismatched thingy',
    eAssignmentSignMix: 'Bad sign mixing'
}

答案 1 :(得分:3)

你可以尝试制作一堆异常类(Exception的所有子类,也许是通过你自己的一些常见的父类)。每个人都会有一个适合该场合的错误消息文本......