【发布时间】:2010-07-23 19:24:14
【问题描述】:
在 java 中,我的客户端类具有“代码”属性和 equals 方法。方法equals接收另一个客户端,并与自己的code attr进行比较。
在 python 中,我刚刚读到我们有 __cmp__ 方法,与 java 方法 equals 一样。好的,我做到了。我创建了我的类客户端,使用“code”attr 和方法 comp 来验证代码是否相同。
class Client():
def __init__(self, code):
self.code = code
def __cmp__(self, obj):
return obj.code == self.code
def __repr__(self):
return str(self.code)
然后我将 3 个 Client 对象放入 python 的列表中:
bla = [Client(1), Client(2), Client(3)]
然后,当我尝试时:
bla.remove(Client(3))
神奇的 python 删除了第一个元素(代码为 1 的客户端)。
我做错了什么?我在python的lib文件中搜索了list的实现,但是不好找。
有人可以帮忙吗?
【问题讨论】:
-
该方法称为
__cmp__。也许您可以展示您对该方法的实现? -
@Daniel 您的评论很可能包含正确答案。考虑将其复制为实际答案,以便我们为您投票。