Conteúdo do Curso
Programação Orientada a Objetos em Python Avançado
Programação Orientada a Objetos em Python Avançado
Métodos Mágicos de Comparação
Da mesma forma como nos métodos mágicos matemáticos, aqui pegamos self
e other
como argumentos e comparamos os atributos desejados. Esses métodos mágicos devem sempre retornar True
ou False
.
Método Mágico | Operação |
---|---|
__eq__(self, other) | == |
__gt__(self, other) | > |
__ge__(self, other) | >= |
__lt__(self, other) | < |
__le__(self, other) | <= |
__ne__(self, other) | != |
Nota
Para entender a nomenclatura destes métodos, observe alguns exemplos:
eq
é igual (eq
ual).gt
é maior que (g
reatert
han).le
é menor ou igual (l
ess ore
qual).ne
é diferente (n
ote
qual).
a = 12.3 b = 5.7 print("a >= b is", a >= b) print("a.__ge__(b) is", a.__ge__(b))
Observe o exemplo da classe Road
:
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)
Nota
Para otimizar o código, você pode utilizar métodos de comparação existentes. Por exemplo, se você implementou o método
__lt__()
(<
), ao implementar o método__ge__()
(>=
), você pode usarreturn not (instance1 < instance2)
, o que retornará o resultado oposto do operador<
já implementado.
Obrigado pelo seu feedback!