class A(object):
def __init__(self, value):
self.value = value
x = A(1)
y = A(2)
q = [x, y]
q.remove(y)
我想從列表中刪除之前添加的特定對象,並且我仍然參考該對象。我不想進行平等測試。我想要一個身份測試。這段代碼似乎可以在CPython和IronPython中使用,但語言是否可以保證這種行爲呢,還是隻是一種僥倖?不覆蓋比較運算符的Python對象是否等於自己?
list.remove
方法文檔是這樣的:same as del s[s.index(x)]
,這意味着執行相等性測試。
因此,如果您不覆蓋__cmp__
,__eq__
或__ne__
,那麼對象是否等於自身?
有趣的是,Python 3中的行爲似乎相反 – 2016-08-27 10:48:29
'__cmp__' [[在Python 3中沒有]](https://docs.python.org/3.0/whatsnew/3.0.html#ordering-comparisons)。不過,您可以使用'__eq__'實現相同的效果。 – wim 2016-08-27 15:57:11
我想知道是否沒有定義__eq__,Python 3是通過地址比較嗎? – 2016-09-16 04:19:07