在 python 中使用户定义的类可排序和/或可散列时,需要重写/实现哪些方法?
有哪些需要注意的问题?
I type dir({})
进入我的解释器以获取内置字典的方法列表。其中,我认为我需要实现一些子集
['__cmp__', '__eq__', '__ge__', '__gt__', '__hash__', '__le__', '__lt__', '__ne__']
Python3 与 Python2 必须实现哪些方法有区别吗?
我几乎将其发布为对其他答案的评论,但这本身就是一个答案。
为了让你的物品可以排序,他们只需要实现__lt__
。这是内置排序使用的唯一方法。
其他比较或functools.total_ordering
仅当您确实想在类中使用比较运算符时才需要。
为了使你的项目可散列,你实现__hash__
正如其他人指出的那样。您还应该实施__eq__
以兼容的方式——等效的项应该具有相同的哈希值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)