Dies ist eine alte Version des Dokuments!


LU04.A03 - Rechteck

Erstellen Sie die Klassen Rechteck und RechteckDC

  • Sie können in einer «normalen» Klasse einen Konstruktor mit Default-Werten und Parametervalidierung implementieren.
  • Sie können die Methode eq korrekt implementieren, um den Inhalt zweier Objekte zu vergleichen (inklusive Typprüfung mit isinstance und Rückgabe von NotImplemented).
  • Sie kennen den Unterschied zwischen Objektidentität (is) und Inhaltsgleichheit (==).
  • Sie können eine Dataclass mit typisierten Attributen, Default-Werten und post_init zur Validierung definieren.
  • Sie erkennen, dass eine Dataclass Konstruktor und eq automatisch generiert, und können den Unterschied zur manuellen Implementation in einer normalen Klasse erklären.

Erstellen Sie die Klasse Rectangle mit den Attributen width und height.

  1. Implementieren Sie den Konstruktor init, der beide Werte als Parameter entgegennimmt.
  2. Vergeben Sie sinnvolle Default-Werte (z. B. je 1.0), sodass ein Rechteck auch ohne Argumente erzeugt werden kann.
  3. Prüfen Sie im Konstruktor, dass width und height grösser als 0 sind. Lösen Sie andernfalls eine ValueError mit aussagekräftiger Meldung aus.
  4. Implementieren Sie die Methode eq, sodass zwei Rechteck-Objekte genau dann als gleich gelten, wenn ihre Breite und Höhe übereinstimmen. Objekte eines anderen Typs sollen korrekt behandelt werden (Rückgabe von NotImplemented, nicht False).

Erstellen Sie mit dem Decorator @dataclass die Klasse RectangleDC mit denselben Attributen width und height, inklusive Typ-Annotationen und identischen Default-Werten wie in Teil 1. Ergänzen Sie eine post_init-Methode, welche dieselbe Validierung wie in Teil 1 vornimmt.

Verzichten Sie bewusst auf eine eigene eq-Methode. Halten Sie in einem Kommentar fest, weshalb dies bei einer Dataclass nicht nötig ist.

⇒ GitHub Repo für externe Besucher

GitHub Repository https://github.com/templates-python/m320-lu04-a03-rectangle

Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden

Marcel Suter

  • de/modul/m320_2024/learningunits/lu04/rechteck.1788417394.txt.gz
  • Zuletzt geändert: 2026/09/03 08:36
  • von msuter