【发布时间】:2011-12-27 23:41:16
【问题描述】:
python 2.7 使用什么来对 vanilla 类实例进行排序?我对默认排序行为感兴趣。
假设我有课
class S():
pass
然后我可以创建几个实例,并对它们进行排序:
a = S(); b = S(); c = S()
l = [(a,'a'), (b,'b') ,(c, 'c')]
sorted(l)
这将打印一些对象的排序。现在我有一个两部分的问题:
- python 是否使用对象的
__hash__(),以及它们的id()? - 是否可以覆盖
__hash__()来影响排序行为?
【问题讨论】:
-
这是 Python 2 还是 3?我的冲动是“覆盖 lt、gt 等”,但我对 Python 2 的“经典”类的理解参差不齐,所以不知道这是否合适。您可能还会发现此链接有帮助:wiki.python.org/moin/HowTo/Sorting