Erste SchritteKostenlos loslegen

Ü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


Klasse Telefon:

    def __init__(self, number):

        self.number = Zahl



    def __eq__(self, other):

        return self.number == \

               other.number




pn = Phone(873555333)

class BankAccount:

    def __init__(self, number):

        self.number = Zahl



    def __eq__(self, other):

        return self.number == \

               other.number




acct = BankAccount(873555333)

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

Kurs anzeigen

Anleitung zur Übung

  • Ändere die Definition von BankAccount so, dass sie nur True zurückgibt, wenn das Attribut number gleich ist und die type() der beiden übergebenen Objekte gleich ist.
  • Prüfe, ob acct und pn gleich sind.

Interaktive Übung zum Anfassen

Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.

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(____)
Bearbeiten und Ausführen von Code