У меня есть класс, представляющий что-то с несколькими полями.Когда список экземпляров этого класса отсортирован, я хочу, чтобы они были отсортированы в определенном порядке (получить определенный ключ от каждого).Я могу просто сделать 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
.