Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
| de:modul:m320_2024:learningunits:lu11:abstrakt_python [2026/08/30 14:05] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | de:modul:m320_2024:learningunits:lu11:abstrakt_python [2026/08/30 14:05] (aktuell) – ↷ Seite von modul:m320_2024:learningunits:lu11:abstrakt_python nach de:modul:m320_2024:learningunits:lu11:abstrakt_python verschoben msuter | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== LU11b - Abstrakte Klassen in Python ====== | ||
| + | Standardmässig stellt Python keine abstrakten Klassen bereit. | ||
| + | Das Modul '' | ||
| + | '' | ||
| + | Eine Methode wird abstrakt, wenn sie mit dem Schlüsselwort '' | ||
| + | |||
| + | ==== Beispiel: Abstrakte Klasse für Vielecke (Polygon) ==== | ||
| + | |||
| + | |||
| + | <file python> | ||
| + | from abc import ABC, abstractmethod | ||
| + | | ||
| + | class Polygon(ABC): | ||
| + | """ | ||
| + | Ein unbestimmtes Polygon, das | ||
| + | a) weiss, dass es eine gewisse Anzahl Seiten hat | ||
| + | b) aber nicht weiss, wie viele es wirklich sind. | ||
| + | """ | ||
| + | |||
| + | def __init__(self): | ||
| + | """ | ||
| + | Konstruktor: | ||
| + | """ | ||
| + | pass | ||
| + | | ||
| + | | ||
| + | @abstractmethod | ||
| + | def my_sides(self): | ||
| + | """ | ||
| + | Abstrakte Methode ohne Implementierung. Diese muss | ||
| + | zwingend in einer abgeleiteten Klasse erfolgen. | ||
| + | """ | ||
| + | pass | ||
| + | | ||
| + | class Triangle(Polygon): | ||
| + | # overriding abstract method | ||
| + | def my_sides(self): | ||
| + | print(' | ||
| + | | ||
| + | class Quadrilateral(Polygon): | ||
| + | # overriding abstract method | ||
| + | def my_sides(self): | ||
| + | print(' | ||
| + | | ||
| + | | ||
| + | if __name__ == ' | ||
| + | polygons = [ | ||
| + | Triangle(), | ||
| + | Quadrilateral(), | ||
| + | ] | ||
| + | for p in polygons: | ||
| + | p.my_sides() | ||
| + | </ | ||
| + | |||
| + | Output: | ||
| + | < | ||
| + | I have 3 sides | ||
| + | I have 4 sides | ||
| + | </ | ||
| + | |||
| + | Beachten Sie hier die Nutzung der Polymorphie, | ||
| + | |||
| + | |||
| + | |||
| + | ---- | ||
| + | [[https:// | ||