由於Python不提供比較運算符的左/右版本,它如何決定調用哪個函數?__eq__如何在Python中以什麼順序處理?
class A(object):
def __eq__(self, other):
print "A __eq__ called"
return self.value == other
class B(object):
def __eq__(self, other):
print "B __eq__ called"
return self.value == other
>>> a = A()
>>> a.value = 3
>>> b = B()
>>> b.value = 4
>>> a == b
"A __eq__ called"
"B __eq__ called"
False
這似乎同時調用__eq__
函數。只是尋找官方的決策樹。
絕對正確。總而言之,這些測試應該是「return self.value == other.value」。 – 2010-08-28 00:17:26
謝謝Ned!只是一些人:這取決於你在找什麼。例如,假設我想:a == 3和a == b都爲真(將b.value更改爲3)。 – PyProg 2010-08-28 00:48:08