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
Это не то, что я ожидал: я пытаюсь сказать «два экземпляра равны, если поля имени равны».
Если я просто return False
из функции __cmp__
, это также сообщается как True
!!
Если я верну -1
, то получу False
- но поскольку я пытаюсь сравнивать строки, это не так.
Что я здесь не так делаю?