There are six equality/relationship methods. They represent what happens if an object is compared using any of the following symbols:
Function | Corresponding symbol and meaning |
object.__lt__(self, other) | <, smaller |
object.__le__(self, other) | <=, smaller or equal |
object.__eq__(self, other) | ==, equal |
object.__ne__(self, other) | !=, not equal |
object.__gt__(self, other) | >, larger |
object.__ge__(self, other) | >=, larger or equal |
Let's illustrate this function with an example based on our prior case—a Person class. We'll add a function that will allow us to sort characters by their age:
class Person:
'''person entity'''
def __init__(self, name, surname, age):
self.name = name
self.surname = surname
self.age = age
def __repr__(self):
return f'Person(name={self.name}, surname={self.surname}, age={self.age})'
def __lt__(self, other):
return self.age < other.age
Now, let's use the same characters:
data = [
{'name':"Pippi", 'surname':'Longstocking', 'age':11},
{'name':"Kalle", 'surname':'Blomkvist', 'age':10},
{'name':'Karlsson', 'surname': 'on-the-Roof', 'age':12}
]
characters = [Person(**row) for row in data]
Finally, we'll sort our characters. Under the hood, the sorting function uses the smaller method:
>>> sorted(characters)
[Person(name=Kalle, surname=Blomkvist, age=10),
Person(name=Pippi, surname=Longstocking, age=11),
Person(name=Karlsson, surname=on-the-Roof, age=12)]