как создать сортируемый тип данных в Python?

У меня есть класс, представляющий что-то с несколькими полями. Когда список экземпляров этого класса сортируется, я хочу, чтобы они были отсортированы в определенном порядке (получить определенный ключ от каждого из них). Я могу просто выполнить list.sort (key = Classname.sortKey) и определить метод sortKey , но я бы предпочел просто list.sort () и получится. Я полагаю, что могу сделать это, переопределив __ cmp __ . Однако что мне делать, если я сравниваю с чем-то, что не относится к моему типу данных? Я думаю, что-то вроде ...

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

, но это работает. Меня не волнует, в каком порядке они находятся в разнородном списке. Я бы просто вернул 0 , но тогда такие вещи, как MyClass (...) == x , всегда верны, для любого x , кроме экземпляра MyClass .

9
задан Claudiu 7 January 2011 в 21:12
поделиться