我想覆盖新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
很难理解这是怎么发生的。
答案 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
的第三个元素。