ÎncepețiÎncepe gratuit

Verificarea egalității claselor

În exercițiul anterior, ai definit o clasă BankAccount cu un atribut number folosit pentru comparație. Totuși, 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ă două clase:


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 se va returna True, deși se compară 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 comparația.

Acest exercițiu face parte din cursul

Introducere în Programarea Orientată pe Obiecte în Python

Vezi cursul

Instrucțiuni pentru exercițiu

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

Exercițiu interactiv practic

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

class BankAccount:
  def __init__(self, number, balance=0):
    self.number, self.balance = number, balance
      
  def withdraw(self, amount):
    self.balance -= amount 

  # Modify to add a check for the class type
  def __eq__(self, other):
    return (self.number == other.number) ____

acct = BankAccount(873555333)
pn = Phone(873555333)

# Check if the two objects are equal
print(____)
Editează și rulează codul