Code Yarns ‍👨‍💻
Tech BlogPersonal Blog

Python: lt()

📅 2010-Feb-05 ⬩ ✍️ Ashwin Nanjappa ⬩ 📚 Archive

If you try to sort a list of objects of your own class ...

class Foobar:
    def __init__(self, idx):
        self.idx = idx
        return

fooList = [Foobar(10), Foobar(2)]
fooList.sort()

... you get a TypeError error:

TypeError: unorderable types: Foobar() < Foobar()

Python is reporting that it does not know how to compare Foobar objects.

Define a __lt__() method in the Foobar class. This rich comparison method is preferred over the generic __cmp__() method.

class Foobar:
    def __lt__(self, other):
    """Less-than comparison."""
    return self.idx < other.idx