On 27 Oct 2005 08:12:15 GMT, Antoon Pardon <[EMAIL PROTECTED]> wrote: [...] > >The evidence suggests that cmp is not used in sorting. If you have a >list of sets, sort will happily try to sort it, while calling cmp >with a set as an argument throws an exception. > A data point re evidence:
>>> class C: ... def __getattr__(self, attr): print attr; raise AttributeError ... >>> sorted((C(),C())) __lt__ __gt__ __gt__ __lt__ __coerce__ __coerce__ __cmp__ __cmp__ [__repr__ <__main__.C instance at 0x02EF388C>, __repr__ <__main__.C instance at 0x02EF38CC>] I think it will be slightly different if you define those methods in a new-style class -- oh, heck, why not do it: >>> class D(object): ... def __lt__(*ignore): print '__lt__'; return NotImplemented ... def __gt__(*ignore): print '__gt__'; return NotImplemented ... def __coerce__(*ignore): print '__coerce__'; return NotImplemented ... def __cmp__(*ignore): print '__cmp__'; return NotImplemented ... >>> sorted((D(),D())) __lt__ __gt__ __cmp__ __cmp__ (I haven't followed the thread much, so please excuse if irrelevant ;-) Regards, Bengt Richter -- http://mail.python.org/mailman/listinfo/python-list