ComeçarComece gratuitamente

Sobrecarregamento da igualdade

Ao comparar dois objetos de uma classe personalizada usando ==, o Python, por padrão, compara apenas os blocos de memória para os quais os objetos apontam, e não os dados contidos nos objetos. Para substituir esse comportamento, a classe pode implementar um método especial, que aceita dois argumentos, os objetos a serem comparados, e retorna True ou False. Esse método será chamado implicitamente quando dois objetos forem comparados.

A classe BankAccount do capítulo anterior está disponível para você no site script.py. Ele tem dois atributos, balance e number, e um método withdraw(). Duas contas bancárias com o mesmo saldo não são necessariamente a mesma conta, mas uma conta bancária geralmente tem um número de conta, e duas contas com o mesmo número de conta devem ser consideradas a mesma.

Este exercício faz parte do curso

Introdução à programação orientada a objetos em Python

Ver Curso

Instruções de exercício

  • Modifique o método __init__() para aceitar um novo argumento chamado number e inicializar um novo atributo number.
  • Defina um método para comparar se o atributo number de dois objetos é igual.

Exercício interativo prático

Experimente este exercício preenchendo este código de exemplo.

class BankAccount:
  # Modify to initialize a number attribute
  def __init__(self, ____, balance=0):
    self.balance = balance
    ____
      
  def withdraw(self, amount):
    self.balance -= amount 
    
  # Define __eq__ that returns True if the number attributes are equal 
  def ____(____, ____):
    return ____.number == ____.____   

# Create accounts and compare them       
acct1 = BankAccount(123, 1000)
acct2 = BankAccount(123, 1000)
acct3 = BankAccount(456, 1000)
print(acct1 == acct2)
print(acct1 == acct3)
    
Editar e executar código