【发布时间】:2010-09-05 20:32:21
【问题描述】:
我注意到我可以使用== 运算符来比较所有本机数据类型(整数、字符串、布尔值、浮点数等)以及包含本机数据类型的列表、元组、集合和字典。在这些情况下,== 运算符会检查两个对象是否相等。但在其他一些情况下(试图比较我创建的类的实例)== 运算符只检查两个变量是否引用同一个对象(因此在这些情况下== 运算符等效于is 运算符)
我的问题是:== 运算符何时不仅仅只是比较身份?
编辑:我正在使用 Python 3
【问题讨论】:
-
本质上,
==与is不同,每当一个类重写它从object继承的__eq__方法时,所以这个问题没有简单的答案。根据您使用的 Python 版本,由于__cmp__的存在,事情变得更加复杂。除了好奇之外,这个问题还有实际原因吗? -
@Dirk,谢谢。我问它主要是出于好奇,但我也认为知道什么时候可以使用 == 运算符来检查对象是否相等是件好事。
标签: python comparison equality