枚举实例应该通过身份还是相等性进行比较?

7 浏览
0 Comments

枚举实例应该通过身份还是相等性进行比较?

PEP 8《编程建议》指出:

与 None 等单例对象的比较应该始终使用 isis not,而不是等式运算符。

根据文档,枚举成员是单例对象。这是否意味着它们也应该通过身份进行比较?

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3
# 是这样吗?
if color is Color.RED:
    ...
# 还是这样?
if color == Color.RED:
    ...

在使用等式运算符时,我没有注意到任何问题需要像 PEP 8 那样强调。如果有缺点的话,它不是默认转为基于身份的比较吗?这只是微观优化吗?

0