"Ошибка типа: неустранимый экземпляр." ошибка, вероятно, из-за определения класса старого стиля, т. е.
class A:
pass
Вместо этого используйте новый стиль:
class A(object):
pass
Если вы переопределяете функцию __cmp__, вы должны переопределить __hash__ для использования вашего объекта в наборах. В другом случае хеш рассматривает все экземпляры объекта как неравные, и функция __cmp__ никогда не будет вызываться.