- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了以下类:
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/
这个问题在这里已经有了答案: Comparing two lists using the greater than or less than operator (3 个答案) 关闭 6 年前。 假设
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 去年关闭。 Improve this questio
我希望能够按一个属性对类列表进行排序,而该属性恰好是另一个类 Date。我做了一些研究,想使用 sorted(list, key=lambda x:date) 排序方法,但看到 date 本身就是一个
假设我的 ClassA 的实例最终会出现在一个数据结构中,并且我们知道 sorted() 将被调用。调用 sorted() 的是别人的代码,所以我不能指定排序函数,但我可以在 ClassA 上实现任何
Python 2.x 有两种重载比较运算符的方法, __cmp__ 或“丰富的比较运算符”,例如 __lt__ . 富比较重载据说是首选,但为什么会这样呢? 丰富的比较运算符实现起来更简单,但您必须使
我创建了以下类: class Image(object): def __init__(self, extension, data, urls=None, user_data=None):
这个问题在这里已经有了答案: Python: default comparison (3 个答案) 关闭 10 年前。 我最感兴趣的是正在发生的事情,但可以说我有一个实现了 __eq__ 的自定义类
我看到过类似的问题,但是他们没有回答为什么python __lt__的优先级比__gt__高? 快速示例,让我给出一个父类(super class)和一个子类: class Person(object
我在 64 位 Windows 上使用 Python 3.5.1。我的问题是 Python 在排序时似乎忽略了用户定义类上的 __eq__ 和 __lt__ 运算符。在尝试对包含此类实例的元组进行排序
我一直在试验 Python 字典,发现 __gt__ 和 __lt__ 是为字典实现的。 我已经对它们进行了测试,它们似乎以某种方式比较了 key ,但我不太清楚这是如何完成的;例如,我不太确定 {1
在 Python3 中,functools.total_ordering decorator允许仅重载 __lt__ 和 __eq__ 以获得所有 6 个比较运算符。 我不明白为什么一个人必须写两个运
很好奇。 我注意到(至少在 py 2.6 和 2.7 中)float 具有所有熟悉的丰富比较函数:__lt__()、__gt__、__eq__ 等 >>> (5.0).__gt__(4.5) True
在下面的 Python 3.5 代码中,我想使用小于运算符 ( None: self.key = k self.next = None # type
我将 QListWidget 内的小部件设置为我自己的 ProductItemWidget 类,以便能够对列表中的项目进行更多自定义。这工作正常,但我无法让列表自动排序。我打电话 my_list.se
假设我有一个类,我想将其成员与常用运算符进行比较 == , , 和 >= . 据我所知,这可以通过初始化定义魔术方法来完成 __cmp__(a, b)返回 -1 ( a b )。 好像__cmp_
这个问题在这里已经有了答案: Is there a built in function for string natural sort? (23 个回答) 关闭 7 年前。 我有数据行并希望按如下方
我有一个intervaltree需要对Intervals进行排序并最终对Points进行排序的库。 我有一个 __cmp__ 方法,它强制执行非常稳定和逻辑的排序(请参阅代码末尾)。而且,我有一个有用
我是一名优秀的程序员,十分优秀!