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:
|
|
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.
Acest exercițiu face parte din cursul
Programare orientată pe obiecte în Python
Instrucțiuni pentru exercițiu
Ambele clase, Phone și BankAccount, sunt deja definite. Rulează codul ca atare folosind butonul „Rulează codul" și examinează rezultatul.
- Modifică definiția clasei
BankAccountastfel încât să returnezeTruedoar dacă atributulnumbereste identic și dacătype()ambelor obiecte transmise metodei este același.
Rulează din nou codul și examinează rezultatul.
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 type()
def __eq__(self, other):
return (self.number == other.number)
acct = BankAccount(873555333)
pn = Phone(873555333)
print(acct == pn)