Python,当在新类中重写__eq __()时,发生了奇怪的事情

时间:2015-07-23 07:38:02

标签: python

我想覆盖新A类中的 eq ,代码为:

>>> class A(object):
...     def __eq__(self, obj):
...         return True
...     

>>> a = A()

>>> b = A()

>>> L = [0, 0, a, 1]

>>> L.index(a)
0

>>> L.index(0)
0

>>> L.index(100)
2

>>> L.index(1)
2

很难理解这是怎么发生的。

1 个答案:

答案 0 :(得分:2)

让我们逻辑地假设index()按顺序通过列表L,从最低索引到最高索引,在第一次遇到元素的True比较时停止。< / p>

>>> L.index(a)

a == 0是第一个True匹配,因此匹配L的第一个元素。

>>> L.index(0)

0 == 0是第一个True匹配,因此匹配L的第一个元素。

>>> L.index(100)

100 == a是第一个True匹配,因此匹配L的第三个元素。

>>> L.index(1)

1 == a是第一个True匹配,因此匹配L的第三个元素。