枚举的pythonic替换[重复]

Posted

技术标签:

【中文标题】枚举的pythonic替换[重复]【英文标题】:pythonic replacement for enums [duplicate] 【发布时间】:2010-10-06 05:23:11 【问题描述】:

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

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

【问题讨论】:

您可能只想要一个字典,但如果不将整个程序/函数视为伪代码,就很难判断。 C 和 Python 非常 不同,在它们中完成任务的最佳方式也不相同。 复制:***.com/questions/36932/… 多重复制:***.com/search?q=python+enum 【参考方案1】:

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

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

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

eAssignBad = 0
eAssignMismatch = 1
eAssignmentSignMix = 2

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于枚举的pythonic替换[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Pythonic 替换字符的方法

根据字典替换列表中值的Pythonic方法

用模拟函数替换真实返回值和函数实现的 Pythonic 方式

用NumPy数组中的```[i,i,i]```快速替换元素i的pythonic方法?

检测循环最终迭代的Pythonic方法[重复]

Pythonic方式迭代序列,一次4个项目[重复]