关于python:你能按子类排序吗?

Can you sort by subclass?

本问题已经有最佳答案,请猛点这里访问。

有没有方法通过子类值列出?我希望"by"变量是第一个,并按.number子类对整个列表进行排序。

1
2
3
4
5
6
7
8
9
10
11
12
13
class Abcd:
    def __init__(self, name, number):
        self.name = name
        self.number = number

ax = Abcd("a", 20)
by = Abcd("b", 1)

lst = [ax, by]

print lst[0]
list.sort(lst)
print lst[0]

应该这样。我所要做的就是为排序功能添加一个键和一些东西,以使打印效果更好,但这些确实不是必需的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Abcd:
    def __init__(self, name, number):
        self.name = name
        self.number = number

    def __str__(self):
        return"{} and {}".format(self.name, self.number)

    def __repr__(self):
        return self.__str__()

ax = Abcd("a", 20)
by = Abcd("b", 1)

lst = [ax, by]

print str(lst)
list.sort(lst, key=lambda x: x.number)
print str(lst)