这肯定是重复的,但是假设我有一个类如下:
class MyObj(object):
def __init__(self, *args, **kwargs):
self._data = [2, 1, 3]
self._more_data = [False, True, False]
我怎样才能使其可排序,而不是针对其他 MyObj 对象(我可以使用 __lt__),而是在内部?因此,如果我调用 sorted(my_obj_instance),我会得到一个包含如下数据的版本:
self._data = [1,2,3]
self._more_data [True, False, False]
即_data是按数值排序的,_more_data已经进行了对应的排序。
请您参考如下方法:
sorted() 从不 修改原始数据。要使其与自定义对象一起使用,您必须实现 __iter__ 虽然(返回例如 iter(self._data))-但这只会给您一个排序版本该对象,既不修改原始对象也不对两个列表进行排序。
您需要的是 sort() 方法,您可以将其称为 yourobj.sort()。然后,此方法将使用适当的 key 参数对列表调用 .sort(),以按照您希望的方式对列表进行排序。
