1. Learn
  2. /
  3. Cursuri
  4. /
  5. Programare orientată pe obiecte în Python

Connected

Exercițiu

Verificarea egalității de clasă

În exercițiul anterior, ai definit o clasă BankAccount cu un atribut number folosit pentru comparație. Însă dacă ai compara un obiect BankAccount cu un obiect dintr-o altă clasă care are și ea un atribut number, ai putea obține rezultate neașteptate.

De exemplu, consideră cele două clase de mai jos:


class Phone:
  def __init__(self, number):
     self.number = number

  def __eq__(self, other):
    return self.number == \
          other.number

pn = Phone(873555333)

class BankAccount:
  def __init__(self, number):
     self.number = number

  def __eq__(self, other):
    return self.number == \
           other.number

acct = BankAccount(873555333)

Rulând acct == pn, rezultatul va fi True, chiar dacă comparăm un număr de telefon cu un număr de cont bancar.

Este o bună practică să verifici clasa obiectelor transmise metodei __eq__(), pentru a te asigura că are sens să le compari.

Instrucțiuni

100 XP

Ambele clase, Phone și BankAccount, sunt deja definite. Rulează codul ca atare folosind butonul „Rulează codul" și examinează rezultatul.

  • Modifică definiția clasei BankAccount astfel încât să returneze True doar dacă atributul number este identic și dacă type() ambelor obiecte transmise metodei este același.

Rulează din nou codul și examinează rezultatul.