我創建了下面的類:好的__eq__,__lt__,...,__hash__圖像類的方法?
class Image(object):
def __init__(self, extension, data, urls=None, user_data=None):
self._extension = extension
self._data = data
self._urls = urls
self._user_data = user_data
self._hex_digest = hashlib.sha1(self._data).hexDigest()
圖片應該是平等的,當所有的值相等。所以我寫道:
def __eq__(self, other):
if isinstance(other, Image) and self.__dict__ == other.__dict__:
return True
return False
def __ne__(self, other):
return not self.__eq__(other)
def __lt__(self, other):
return self.__dict__ < other.__dict__
...
但是__hash__
方法應該怎麼樣?平等圖片應該返回相同的哈希值...
def __hash__(self):
# won't work !?!
return hash(self.__dict__)
是我嘗試使用__eq__, __ne__, __lt__, __hash__, ...
推薦的方法是什麼?
我考慮了一類consitent我不得不超負荷'的__eq__,__ne__,__lt__,__le__,__ge__,__gt__,...''而不是__cmp__'。 – 2010-04-01 09:00:07