Skip to main content
 首页 » 编程设计

python之如何使类数据可排序

2025年05月04日9luoye11

这肯定是重复的,但是假设我有一个类如下:

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(),以按照您希望的方式对列表进行排序。