Überprüfung der Klassengleichheit
In der vorherigen Übung hast du eine Klasse BankAccount mit einem number Attribut definiert, das zum Vergleich verwendet wurde. Wenn du aber ein BankAccount Objekt mit einem Objekt einer anderen Klasse vergleichst, das auch ein number Attribut hat, könntest du zu unerwarteten Ergebnissen kommen.
Betrachten wir zum Beispiel zwei Klassen
|
|
Wenn du acct == pn ausführst, wird True zurückgegeben, obwohl es eine Telefonnummer mit einer Bankkontonummer vergleicht.
Es empfiehlt sich, die Klasse der Objekte, die an die Methode __eq__() übergeben werden, zu überprüfen, um sicherzustellen, dass der Vergleich sinnvoll ist.
Diese Übung ist Teil des Kurses
Einführung in die objektorientierte Programmierung in Python
Anleitung zur Übung
- Ändere die Definition von
BankAccountso, dass sie nurTruezurückgibt, wenn das Attributnumbergleich ist und dietype()der beiden übergebenen Objekte gleich ist. - Prüfe, ob
acctundpngleich sind.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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(____)