我試圖重載一個類中的==操作符,這是init方法:重載__eq__一類
class Point:
def __init__(self, a, b, c, d):
self.a = a
self.b = b
self.c = c
self.d = d
self._fields = ['a','b','c','d']
我試圖重載==操作符,並在這裏是我的代碼:
def __eq__(self,right):
if type(right) == type(self):
for i in self._fields:
print(self._fields.index(i))
else:
return False
return True
對於==是真實的,在初始化所有的值應該是相同的。所以如果我有test=Point(1,2,3)
,然後我有test2 = Point(1,2,3)
,那麼test == test2應該返回True
。但是,我有test=Point(1,2,3)
和test2=Point(1,1,3)
,這是返回True
。任何人都可以弄清楚爲什麼這是?
這仍然不是你的實際代碼,'如果類型(右)是不是{TYPE_NAME}:'在你將'Point'與'set'比較的情況下總是如此(考慮到你已經在某處定義了'type_name') – 2015-02-18 00:37:18
你是對的。我已經更新了當前的代碼,我嘗試使用self.i作爲答案中的一個,但無濟於事。 – Tyler 2015-02-18 00:40:27
你當前的代碼沒有做任何事情來比較'self'和'right',當'right'是'Point'類型時,它最終返回'True'。加上'test2 = Point(1,1,3)'初始化本身將失敗,因爲參數的數量不正確。 – 2015-02-18 00:42:29