Kontrollera klassequivalens
I föregående övning definierade du en BankAccount-klass med ett number-attribut som användes vid jämförelse. Men om du jämför ett BankAccount-objekt med ett objekt från en annan klass som också har ett number-attribut kan du få oväntade resultat.
Tänk till exempel på dessa två klasser:
|
|
Om du kör acct == pn returneras True, trots att du jämför ett telefonnummer med ett bankkontonummer.
Det är god praxis att kontrollera klassen hos de objekt som skickas till metoden __eq__(), för att säkerställa att jämförelsen är meningsfull.
Den här övningen är en del av kursen
Objektorienterad programmering i Python
Övningsinstruktioner
Både klassen Phone och klassen BankAccount har definierats. Kör koden som den är med knappen "Run code" och undersök utdata.
- Ändra definitionen av
BankAccountså att den bara returnerarTrueom attributetnumberär detsamma ochtype()för båda objekten som skickas in är densamma.
Kör koden och undersök utdata igen.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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)