LoslegenKostenlos loslegen

Überlastung der Gleichheit

Wenn du zwei Objekte einer benutzerdefinierten Klasse mit == vergleichst, vergleicht Python standardmäßig nur die Speicherchunks, auf die die Objekte zeigen, und nicht die in den Objekten enthaltenen Daten. Um dieses Verhalten außer Kraft zu setzen, kann die Klasse eine spezielle Methode implementieren, die zwei Argumente, die zu vergleichenden Objekte, entgegennimmt und True oder False zurückgibt. Diese Methode wird implizit aufgerufen, wenn zwei Objekte verglichen werden.

Die Klasse BankAccount aus dem vorherigen Kapitel steht dir im script.py zur Verfügung. Sie hat zwei Attribute, balance und number, und eine Methode withdraw(). Zwei Bankkonten mit demselben Saldo sind nicht unbedingt dasselbe Konto, aber ein Bankkonto hat normalerweise eine Kontonummer, und zwei Konten mit derselben Kontonummer sollten als dasselbe angesehen werden.

Diese Übung ist Teil des Kurses

Einführung in die objektorientierte Programmierung in Python

Kurs anzeigen

Anleitung zur Übung

  • Ändere die Methode __init__(), um ein neues Argument namens number zu akzeptieren und ein neues Attribut number zu initialisieren.
  • Definiere eine Methode, um zu vergleichen, ob das number Attribut zweier Objekte gleich ist.

Interaktive Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

class BankAccount:
  # Modify to initialize a number attribute
  def __init__(self, ____, balance=0):
    self.balance = balance
    ____
      
  def withdraw(self, amount):
    self.balance -= amount 
    
  # Define __eq__ that returns True if the number attributes are equal 
  def ____(____, ____):
    return ____.number == ____.____   

# Create accounts and compare them       
acct1 = BankAccount(123, 1000)
acct2 = BankAccount(123, 1000)
acct3 = BankAccount(456, 1000)
print(acct1 == acct2)
print(acct1 == acct3)
    
Code bearbeiten und ausführen