Gleichheit der Klassen prüfen
In der vorherigen Übung hast du eine BankAccount-Klasse mit einem Attribut number definiert, das für Vergleiche verwendet wurde. Wenn du jedoch ein BankAccount-Objekt mit einem Objekt einer anderen Klasse vergleichst, das ebenfalls ein Attribut number hat, kannst du zu unerwarteten Ergebnissen kommen.
Betrachte zum Beispiel zwei Klassen
|
|
Das Ausführen von acct == pn gibt True zurück, obwohl wir eine Telefonnummer mit einer Bankkontonummer vergleichen.
Es ist gute Praxis, in der Methode __eq__() die Klasse der übergebenen Objekte zu prüfen, um sicherzustellen, dass der Vergleich sinnvoll ist.
Diese Übung ist Teil des Kurses
Objektorientierte Programmierung in Python
Anleitung zur Übung
Beide Klassen, Phone und BankAccount, sind definiert. Führe den Code zunächst unverändert mit dem Button "Code ausführen" aus und schau dir die Ausgabe an.
- Ändere die Definition von
BankAccountso, dassTruenur zurückgegeben wird, wenn das Attributnumbergleich ist und dertype()beider übergebener Objekte derselbe ist.
Führe den Code erneut aus und prüfe die Ausgabe.
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 type()
def __eq__(self, other):
return (self.number == other.number)
acct = BankAccount(873555333)
pn = Phone(873555333)
print(acct == pn)