I'm writing a class that implements rich comparisons, and I find myself writing a lot of very similar code. If the calculation is short and simple, I do something like this:
class Parrot: def __eq__(self, other): return self.plumage() == other.plumage() def __ne__(self, other): return self.plumage() != other.plumage() def __lt__(self, other): return self.plumage() < other.plumage() def __gt__(self, other): return self.plumage() > other.plumage() def __le__(self, other): return self.plumage() <= other.plumage() def __ge__(self, other): return self.plumage() >= other.plumage() If the comparison requires a lot of work, I'll do something like this: class Aardvark: def __le__(self, other): return lots_of_work(self, other) def __gt__(self, other): return not self <= other # etc. But I can't help feeling that there is a better way. What do others do? -- Steven. -- http://mail.python.org/mailman/listinfo/python-list