gpt4 book ai didi

python - 图像类有好的 __eq__、__lt__、...、__hash__ 方法吗?

转载 作者:行者123 更新时间:2023-11-28 21:30:25 25 4
gpt4 key购买 nike

我创建了以下类:

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__, ... 的方式推荐一下?

最佳答案

您真的需要订购图像吗?如果没有,我会放弃 __lt__方法。对于 __hash__ ,请记住,两个不相等的对象可以具有相同的哈希值,因此您可以仅选择一个属性(或使用多个属性的元组)来派生哈希码。例如:

def __hash__(self):
return hash(self._hex_digest)

关于python - 图像类有好的 __eq__、__lt__、...、__hash__ 方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2555338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com