ÎncepețiÎncepe gratuit

Supraîncărcarea operatorului de egalitate

Când compari două obiecte ale unei clase personalizate folosind ==, Python compară implicit doar zonele de memorie către care pointează obiectele, nu datele conținute în acestea. Pentru a modifica acest comportament, clasa poate implementa o metodă specială, care acceptă două argumente – obiectele de comparat – și returnează True sau False. Această metodă va fi apelată implicit ori de câte ori sunt comparate două obiecte.

Clasa BankAccount din capitolul anterior este disponibilă în script.py. Are două atribute, balance și number, și o metodă withdraw(). Două conturi bancare cu același sold nu sunt neapărat același cont, însă un cont bancar are de obicei un număr de cont, iar două conturi cu același număr ar trebui considerate identice.

Acest exercițiu face parte din cursul

Introducere în Programarea Orientată pe Obiecte în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Modifică metoda __init__() astfel încât să accepte un nou argument numit number și inițializează un nou atribut number.
  • Definește o metodă care să verifice dacă atributul number al două obiecte este egal.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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)
    
Editează și rulează codul