关于python:pythonic替换枚举

pythonic replacement for enums

本问题已经有最佳答案,请猛点这里访问。

在我的python脚本中,我分析的是一个用户创建的文件,通常会有一些错误,有些情况下我警告用户要更清楚。在C中,我将拥有一个类似eassignbad、eassignmismatch、eassignmentsignmix(sign与unsigned混合)的枚举。然后我会查找该值以打印错误或警告消息。我把warningmsg链接到一个地方,我喜欢名称的可读性,而不是文字值。用什么来代替这个?

的副本:如何在Python中表示"枚举"?


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

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

您可以用一个简单的dict来记录错误消息,也可以用一些整数常量来记录错误号。

1
2
3
4
5
6
7
8
9
eAssignBad = 0
eAssignMismatch = 1
eAssignmentSignMix = 2

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

您可以尝试创建一组异常类(异常的所有子类,可能通过您自己的某个公共父类)。每一个都会有一个适合这种情况的错误消息文本…