你可以按子类排序吗?

时间:2015-12-12 15:56:31

标签: python python-2.7

有没有办法列出子类值?我希望'by'变量成为第一个并按.number子类排序整个列表。

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 个答案:

答案 0 :(得分:1)

这应该做。我所做的只是为sort函数添加一个键,以及一些使打印看起来更好的东西,但这些并不是必需的。

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)