Gelijkheid van klassen controleren
In de vorige oefening definieerde je een BankAccount-klasse met een attribuut number dat gebruikt werd voor vergelijking. Maar als je een BankAccount-object zou vergelijken met een object van een andere klasse die ook een attribuut number heeft, kun je onverwachte resultaten krijgen.
Neem bijvoorbeeld twee klassen
|
|
Als je acct == pn uitvoert, krijg je True, ook al vergelijk je een telefoonnummer met een bankrekeningnummer.
Het is een goede gewoonte om in de __eq__()-methode de klasse van de doorgegeven objecten te controleren, zodat de vergelijking logisch is.
Deze oefening maakt deel uit van de cursus
Introductie tot objectgeoriënteerd programmeren in Python
Oefeninstructies
- Pas de definitie van
BankAccountaan zodat deze alleenTrueretourneert als het attribuutnumberhetzelfde is én hettype()van beide doorgegeven objecten gelijk is. - Controleer of
acctenpngelijk zijn.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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(____)