["python","enums"]
Should enum instances be compared by identity or equality?

PEP 8 Programming Recommendations says: Comparisons to singletons like None should always be done with is or is not, never the equality operators. According to the docs, enum members are singletons. Does that mean they should also be compared by identity? class Color(Enum): RED = 1 GREEN = 2 BLUE = 3 # like this? if color is Color.RED: ... # or like this if color == Color.RED: ... When using equality operators, I haven't noticed any issues with this to warrant such strong wording as PEP 8. What's the drawback of using equality, if any? Doesn't it just fall back to an identity-based comparison anyway? Is this just a micro-optimisation?
From https://docs.python.org/3/howto/enum.html#comparisons : Enumeration members are compared by identity: >>> Color.RED is Color.RED True >>> Color.RED is Color.BLUE False >>> Color.RED is not Color.BLUE True