枚举实例应该通过身份还是相等性进行比较?
- 论坛
- 枚举实例应该通过身份还是相等性进行比较?
7 浏览
枚举实例应该通过身份还是相等性进行比较?
PEP 8《编程建议》指出:
与 None 等单例对象的比较应该始终使用
is
或is not
,而不是等式运算符。
根据文档,枚举成员是单例对象。这是否意味着它们也应该通过身份进行比较?
class Color(Enum): RED = 1 GREEN = 2 BLUE = 3 # 是这样吗? if color is Color.RED: ... # 还是这样? if color == Color.RED: ...
在使用等式运算符时,我没有注意到任何问题需要像 PEP 8 那样强调。如果有缺点的话,它不是默认转为基于身份的比较吗?这只是微观优化吗?