Kontrollera klassequivalens
I den föregående övningen definierade du en BankAccount-klass med ett number-attribut som användes för 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.
Betrakta till exempel dessa två klasser:
|
|
Att köra acct == pn returnerar True, trots att jämförelsen görs mellan ett telefonnummer och 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
Introduktion till objektorienterad programmering i Python
Övningsinstruktioner
- Ändra definitionen av
BankAccountså att den bara returnerarTrueomnumber-attributet är detsamma ochtype()för båda objekten som skickas till metoden är densamma. - Kontrollera om
acctochpnär lika.
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 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(____)