str() ohne __str__ |
True für “object at” |
|
Ohne eigene Methode zeigt Python nur Klasse und Speicheradresse. |
print(reihen[0]) |
Drossel: 4.00 (n=3) |
__str__ |
lesbare Darstellung |
len(reihen[1]) |
3 |
__len__ |
|
print(reihen[2:]) |
[Reihe('Pumpe', [5.0]), Reihe('Filter', [3.0, 3.4])] |
__repr__ |
Eine Liste zeigt ihre Elemente immer mit __repr__, nie mit __str__. Die Ausgabe ist gültiger Python-Code. |
sorted(reihen) |
Filter, Drossel, Ventil, Pumpe |
__lt__ |
Mittelwerte 3.2, 4.0, 4.07, 5.0. sorted braucht nur den Kleiner-Vergleich. |
max(reihen) |
Pumpe: 5.00 (n=1) |
__lt__, dann __str__ |
|
R: drossel, ventil |
Drossel: 4.00 (n=3), Ventil: 4.07 (n=3) |
print.messreihe |
Die automatische Anzeige ruft die Druckmethode der Klasse auf. |
| R: sortiert |
Filter, Drossel, Ventil, Pumpe |
order() |
R sortiert über die berechneten Mittelwerte, nicht über die Objekte. |
| Dataclass sortiert |
[Messung(wert=1.5, einheit='cm'), Messung(wert=3.0, einheit='mm'), Messung(wert=4.2, einheit='mm')] |
erzeugtes __lt__ |
Falsch sortiert: 1.5 cm sind 15 mm und gehören ans Ende. |
Messung(2.0) == Messung(2.0, "cm") |
True |
erzeugtes __eq__ |
2 mm gelten als gleich 2 cm, weil einheit mit compare=False vom Vergleich ausgenommen ist. |