2011-01-07 33 views
8

Tôi có một lớp đại diện cho một cái gì đó với một vài trường. Khi một danh sách các cá thể của lớp này được sắp xếp, tôi muốn chúng được sắp xếp theo một thứ tự cụ thể (có được một khóa cụ thể từ mỗi thứ tự). Tôi chỉ có thể làm list.sort(key=Classname.sortKey) và xác định phương thức sortKey, nhưng tôi chỉ muốn thực hiện list.sort() và làm cho nó hoạt động. Tôi có thể làm điều này bằng cách ghi đè __cmp__. Tuy nhiên, tôi phải làm gì khi so sánh với thứ gì đó không phải là kiểu dữ liệu của tôi? Tôi có hình dạng giống như ...cách tạo kiểu dữ liệu có thể sắp xếp bằng Python?

def __cmp__(self, o): 
    if isinstance(o, MyClass): 
     return cmp(self.sortKey(), o.sortKey()) 
    return object.__cmp__(self, o) ##**wrong 

nhưng thay vào đó lại hoạt động. Tôi không quan tâm thứ tự họ lấy trong một danh sách không đồng nhất. Tôi sẽ chỉ trả lại 0 nhưng sau đó các công cụ như MyClass(...) == x luôn đúng, đối với bất kỳ x không phải là một phiên bản của MyClass.

Trả lời

Các vấn đề liên quan