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:
|
|
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
Instrucțiuni pentru exercițiu
- Modifică definiția clasei
BankAccountastfel încât să returnezeTruedoar dacă atributulnumbereste același șitype()ambelor obiecte transmise este același. - Verifică dacă
acctșipnsunt 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(____)