Course Content
In-Depth Python OOP
In-Depth Python OOP
Comparison Magic Methods
Similarly to the mathematical magic methods, here we take self
and other
as arguments and compare their desired attributes. These magic methods should always return True
or False
.
Magic Method | Operation |
---|---|
__eq__(self, other) | == |
__gt__(self, other) | > |
__ge__(self, other) | >= |
__lt__(self, other) | < |
__le__(self, other) | <= |
__ne__(self, other) | != |
Note
To understand the naming of these methods, look at some examples:
eq
iseq
ual.gt
isg
reatert
han.le
isl
ess ore
qual.ne
isn
ote
qual.
a = 12.3 b = 5.7 print("a >= b is", a >= b) print("a.__ge__(b) is", a.__ge__(b))
Look at the example of Road
class:
class Road: def __init__(self, length): self.length = length def __eq__(self, other): if isinstance(other, Road): return self.length == other.length # compare with road return self.length == other # compare with number road_1 = Road(20) road_2 = Road(30) road_3 = Road(20) print(road_1 == road_2) print(road_1 == road_3) print(road_1 == 20) print(road_1 == 20.0) print(road_1 == 1412)
Note
To optimize the code, you can utilize existing comparison methods. For example, if you have implemented the
__lt__()
method (<
), by implementing the__ge__()
method (>=
), you can usereturn not (instance1 < instance2)
which will return the opposite result of the already implemented<
operator.
Thanks for your feedback!