python list indexes 的解释是什么?

What is python list indexes explanation here?

这是我的部分代码:

some_item = target_item
first_item = my_list[0]
print first_item
print some_item
print my_list.index(first_item)
print my_list.index(some_item)
print "Finished"
exit()

这是我得到的:

<models.adb.ADB object at 0x7f1ec7654b50>
<models.seb.SEB object at 0x7f1ec7654b90>
0
0
Finished

我在 my_list 中的项目是 class 个对象。

有人可以解释一下这种行为吗?

这取决于为 ADBSEB 实施的比较,可能通过为此 类.

实施 __eq__ 运算符

当python在列表中寻找first_itemsome_item的实例时,他会使用这个运算符来判断是否第i个元素在列表中列表是这个元素,扫描每个 i.

因此,如果实现是这样的

class Parent:
    def __init__(self):
        self.x = 0
    def __eq__(parentObj):
        return self.x == parentObj.x

class ADB (Parent):
   def __init__(self): super.__init__()

class SEB (Parent):
   def __init__(self): super.__init__()

它会导致 ADB() == SEB(),因此,导致对象在与第一个列表的元素进行比较时 "match",但同时是不同的对象。


请注意,同样可以这样做,使用继承来简化示例。

class ADB (Parent):
    def __init__(self):
        self.x = 0
    def __eq__(obj):
        return self.x == obj.x

class SEB (Parent):
    def __init__(self):
        self.x = 0
    def __eq__(obj):
        return self.x == obj.x