假设我的ClassA实例最终会出现在数据结构中,我们知道将在其上调用sorted().这是别人的代码,它会调用sorted(),所以我不能指定一个排序函数,但我可以实现适合ClassA的任何方法.
在我看来
def __lt__(self, other):
Run Code Online (Sandbox Code Playgroud)
是足够的,我不需要实现其他五个左右的方法(qt,eq,le,ge,ne).
这够了吗?
我根据它们的一个属性对一些对象进行排序,使用类似这样的东西:
sorted_list = sorted(unsorted_list, key=lambda x: x.my_attr)
Run Code Online (Sandbox Code Playgroud)
有没有办法对这些对象的列表列表进行排序,就像Python可以对整数列表列表进行排序一样?我可以__cmp__(self, other)为这些对象重载,但这会在外部包中引发困难.嵌套也可能变得任意深,所以我认为我不能只使用列表理解.
我想知道是否有什么东西我可以生成my_attrs的列表并将其链接到相应的对象列表.我想不出一个好的方法来做到这一点.