这段代码片段真的让我感到困惑:
我一直认为
class O(object):
pass
O() == O() # False
O() is O() # False
hash(O()) == hash(O()) # True !
id(O()) == id(O()) # True !!!
我一直认为
is
运算符是在比较 id
,而默认的实例相等检查 (==
) 也是在比较 id
,或者至少是在比较 hash
:怎么可能两个类实例共享相同的 id
,但却没有任何相似之处?
我正在使用 CPython 2.7.6。
a=0; b=0; id(a) == id(b)
返回True
。 - Eli Korvigo