gpt4 book ai didi

python - __cmp__ 方法在 Python 2.x 中是否没有按预期工作?

转载 作者:太空狗 更新时间:2023-10-29 22:03:16 25 4
gpt4 key购买 nike

class x:
def __init__(self,name):
self.name=name

def __str__(self):
return self.name

def __cmp__(self,other):
print("cmp method called with self="+str(self)+",other="+str(other))
return self.name==other.name
# return False


instance1=x("hello")
instance2=x("there")

print(instance1==instance2)
print(instance1.name==instance2.name)

这里的输出是:

cmp method called with self=hello,other=there
True
False

这不是我所期望的:我想说的是“如果名称字段相等,则两个实例相等”。

如果我只是从 __cmp__ 函数中返回 False,这也会报告为 True!!如果我返回 -1,则会得到 False - 但由于我正在尝试比较字符串,所以感觉不对。

我在这里做错了什么?

最佳答案

__cmp__(x,y)如果 x < y 应返回负数(例如 -1) , 如果 x > y 则为正数(例如 1)如果 x == y 则为 0 .你不应该用它返回一个 bool 值。

您要重载的是 __eq__(x, y) .

关于python - __cmp__ 方法在 Python 2.x 中是否没有按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2146225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com