How to support equivalence (“equality”) check in Python classes?

Sometimes, we want to support equivalence (“equality”) check in Python classes.

In this article, we’ll look at how to support equivalence (“equality”) check in Python classes.

How to support equivalence (“equality”) check in Python classes?

To support equivalence (“equality”) check in Python classes, we can override the __eq__ method in the Python class.

For instance, we write:

class Number:
    def __init__(self, number):
        self.number = number

    def __eq__(self, other):
        if isinstance(other, Number):
            return self.number == other.number
        return False

n1 = Number(1)
n2 = Number(1)
print(n1 == n2)

to add the __eq__ method which checks for the value of self.number to determine equality of a Number instances instead of using the default way, which is to compare object ID for equality.

We only do the check if other is a Number instance. Otherwise, we return False directly.

Next, we create 2 Number instances with the same value for self.number.

Therefore, n1 and n2 should be equal according to our check, and so True is printed.

Conclusion

To support equivalence (“equality”) check in Python classes, we can override the __eq__ method in the Python class.