答案 0 :(得分:7)
回溯似乎表明你的goal2是一个字符串对象,而不是一个Goal对象 但你可以这样做来保护自己:
def __eq__(self, other):
try:
return self.name == other.name
except AttributeError:
return False
答案 1 :(得分:6)
在Python 2.6中,它对我来说就像一个魅力。其中一个变量很可能不是Goal
个对象。正确使用应该是:
a = Goal('a', 1);
b = Goal('b', 2);
if (a == b):
print 'yay'
else:
print 'nay'
答案 2 :(得分:2)
您可以进一步保护您的平等运算符:
def __eq__(self, other):
if type(self) != type(other):
raise ValueError('comparing apples and carrots (%s)'%type(other))
return self.name == other.name