根据文档, 枚举成员是单例。
>>> from enum import Enum
>>> class Potato(Enum):
... spud = 1234
... chat = 1234
...
>>> x = 1234
>>> y = 1234
>>> x is y
False
>>> x = Potato.spud
>>> y = Potato.chat
>>> x is y
True
>>> x.value is y.value
True
这是否意味着我们还应该按身份比较它们,正如 PEP8 建议我们应该始终使用 is/is not 而永远不要使用相等运算符来表示“像 None 这样的单例”?
到目前为止,我一直在使用相等运算符,并且没有注意到任何问题可以保证像 PEP8 警告的那样强硬的措辞。如果有的话,对枚举实例使用相等的缺点到底是什么?或者它只是一个微优化?
原文由 wim 发布,翻译遵循 CC BY-SA 4.0 许可协议
来自 https://docs.python.org/3/library/enum.html#module-enum :
特别是,来自 https://docs.python.org/3/howto/enum.html#comparisons :