Python 按属性对对象列表进行排序

Python 按属性对对象列表进行排序,python,Python,我正在尝试在python中对对象列表进行排序,但是此代码不起作用: import datetime class Day: def __init__(self, date, text): self.date = date self.text = text def __cmp__(self, other): return cmp(self.date, other.date) mylist = [Day(datetime.date(

我正在尝试在python中对对象列表进行排序,但是此代码不起作用:

import datetime

class Day:
    def __init__(self, date, text):
        self.date = date
        self.text = text

    def __cmp__(self, other):
        return cmp(self.date, other.date)

mylist = [Day(datetime.date(2009, 01, 02), "Jan 2"), Day(datetime.date(2009, 01, 01), "Jan 1")]
print mylist
print mylist.sort()
其输出为:

[<__main__.Day instance at 0x519e0>, <__main__.Day instance at 0x51a08>]
None

有人能告诉我解决这个问题的好方法吗?为什么排序函数不返回任何值?

mylist.sort不返回任何值,它将对列表进行适当排序。换成

mylist.sort()
print mylist
以查看正确的结果

见附注7

排序和反向方法 修改经济适用的列表 排序或反转时的空间大小 大名单。提醒你他们 副作用,他们不会 返回已排序或已反转的列表


有关将返回任何iterable的已排序副本的函数,请参阅。

-1:文档中没有引用。“已排序”不会修改原始列表。有时候你想修改原始列表,有时候你不想。我知道。这就是为什么它返回一个排序副本,而不是对排序列表的引用。