Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Métodos Mágicos de Comparação | Métodos Mágicos
Programação Orientada a Objetos em Python Avançado
course content

Conteúdo do Curso

Programação Orientada a Objetos em Python Avançado

Programação Orientada a Objetos em Python Avançado

1. Conceitos de POO
2. Herança
3. Encapsulamento
4. Polimorfismo e Abstração
5. Métodos Mágicos

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ágicoOperaçã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 (equal).
  • gt é maior que (greater than).
  • le é menor ou igual (less or equal).
  • ne é diferente (not equal).
12345
a = 12.3 b = 5.7 print("a >= b is", a >= b) print("a.__ge__(b) is", a.__ge__(b))
copy

Observe o exemplo da classe Road:

123456789101112131415161718
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)
copy

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 usar return not (instance1 < instance2), o que retornará o resultado oposto do operador < já implementado.

Qual método mágico deve ser utilizado?

Selecione a resposta correta

Tudo estava claro?

Seção 5. Capítulo 4
We're sorry to hear that something went wrong. What happened?
some-alt