Python 中枚举的常见做法是什么?
如何在 Python 中实现枚举类型(在某些语言中拼写为 enum
)? 获得此功能的常见做法是什么?
How can I implement an enumeration type (spelled enum
in some languages) in Python? What is the common practice to get this functionality?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
更新:对于 Python 3.4+:
从 Python 3.4+ 开始,您现在可以使用
Enum
(或IntEnum
对于具有int
值的枚举) enum 模块。 使用enum.auto
来自动增加值:Update: For Python 3.4+:
As of Python 3.4+, you can now use
Enum
(orIntEnum
for enums withint
values) from the enum module. Useenum.auto
to increment the values up automatically:我已经多次看到这种模式:
您也可以只使用类成员,尽管您必须提供自己的编号:
如果您正在寻找更健壮的东西(稀疏值、特定于枚举的异常等), 尝试这个食谱。
I've seen this pattern several times:
You can also just use class members, though you'll have to supply your own numbering:
If you're looking for something more robust (sparse values, enum-specific exception, etc.), try this recipe.
我不知道为什么 Python 本身不支持枚举。
我发现模拟它们的最好方法是覆盖 _ str _ 和 _ eq _ 这样你就可以比较它们,当你使用 print() 时,你会得到字符串而不是数值。
用法:
I have no idea why Enums are not support natively by Python.
The best way I've found to emulate them is by overridding _ str _ and _ eq _ so you can compare them and when you use print() you get the string instead of the numerical value.
Usage:
你也许可以使用继承结构,尽管我玩得越多,我就越觉得肮脏。
You could probably use an inheritance structure although the more I played with this the dirtier I felt.