2015-12-12 74 views
0

有沒有辦法通過子類值列出?我希望'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

這應該做。我所做的只是爲排序功能添加一個鍵,以及一些讓打印效果更好的東西,但這些並不是必需的。

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) 
+0

它的工作原理。感謝幫助 – Gunnm