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