DEV Community

welingtoncassis
welingtoncassis

Posted on • Edited on

2

Comparando objetos no Python

Por padrão os tipos primitivos (inteiro, string ...) no Python já têm implementado nativamente suas próprias maneiras de se comparar e no caso do inteiro e da string o que se compara são seus valores. Porém, ao tentar comparar objetos de classes criadas em nosso código utilizando o operador == ele não funciona como queremos. Isso porque o Python não sabe como deve comparar os objetos de tipo que declaramos no código quando utilizamos o operador == .

Suponha que temos em nosso código duas instâncias da classe Produto e queremos verificar se elas são iguais.

Exemplo:

Classe Produto

Ao usarmos == o retorno será False pois ele irá checar se as varáveis em comparação apontam para o mesmo objeto na memória.

Rich comparison

No Python temos como implementar algo similar ao equals() do Java, utilizando rich comparison podemos definir os seguintes métodos de comparação em uma classe:

  • __eq__(), chamado pelo operador ==
  • __ne__(), chamado pelo operador !=
  • __gt__(), chamado pelo operador >
  • __lt__(), chamado pelo operador <
  • __ge__(), chamado pelo operador >=
  • __le__(), chamado pelo operador <=

Para resolvermos nosso problema de comparação iremos utilizar o método __eq__(). Vamos utilizar a propriedade 'nome' da classe para fazer a comparação.

Exemplo:

Classe Produto com __eq__()

Agora ao usarmos == o retorno será True e não teremos problemas com comparações entre objetos que nós mesmos implementamos no Python!

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

Top comments (4)

Collapse
 
rafaelassumpcao profile image
Rafael A

cara parabéns pelo artigo, achei muito bom e acredito que alcançou o objetivo de informar nós iniciantes em python como a linguagem funciona.

Continue com o excelente trabalho por favor! abraços.

Collapse
 
welingtoncassis profile image
welingtoncassis

Obrigado Rafa!

Collapse
 
sarahsantana profile image
sarah santana

Adoreeei! Ainda não cheguei nessa parte, mas já vou salvar pra aprender :)

Collapse
 
welingtoncassis profile image
welingtoncassis

Muito obrigado Sarah!

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay