Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:m320_2024:learningunits:lu02:datahiding [2026/08/30 14:06] – ↷ Links angepasst, weil Seiten im Wiki verschoben wurden msuter | de:modul:m320_2024:learningunits:lu02:datahiding [2026/09/11 13:32] (aktuell) – [Wann verwende ich @property und @setter] msuter | ||
|---|---|---|---|
| Zeile 91: | Zeile 91: | ||
| Auf den ersten Blick scheint es, als würde das Programm in Zeile 24 direkt auf das Attribut '' | Auf den ersten Blick scheint es, als würde das Programm in Zeile 24 direkt auf das Attribut '' | ||
| Tatsächlich erkennt Python die Decorators '' | Tatsächlich erkennt Python die Decorators '' | ||
| + | |||
| + | ===== Wann verwende ich @property und @setter ===== | ||
| + | Zunächst mal sollten **alle** Attribute als '' | ||
| + | Soll ein fremdes Objekt Lese- oder Schreibzugriff auf ein Attribut erhalten, schreiben wir eine entsprechende Property (Lesen) und/oder Setter (Schreiben). | ||
| + | |||
| + | ==== Entwerfen und Realisieren der Klasse ==== | ||
| + | Beim Entwerfen einer Klasse stelle ich mir ein paar Fragen: | ||
| + | * Dürfen fremde Objekte den Wert dieses Attributs lesen? => Ich erstelle eine Property. | ||
| + | * Dürfen fremde Objekte den Wert dieses Attributs verändern? => Ich erstelle einen Setter. | ||
| + | |||
| + | ==== Zugriff auf andere Objekte ==== | ||
| + | |||
| + | Wenn ich in einem Programm auf ein Objekt zugreife, studiere ich zunächst mal seine Attribute und Methoden. | ||
| + | Dabei achte ich auf einige Punkte: | ||
| + | - Der Bezeichner des Attributs beginnt mit einem '' | ||
| + | - Es gibt keine Property => Die Klasse möchte nicht, dass ich dieses Attribut lese. | ||
| + | - Es gibt keinen Setter => Ich soll das Attribut nicht direkt verändern. | ||
| + | |||
| + | Bei Python sind das einfach Empfehlungen. Wenn ich dies ignoriere, liegt das Risiko bei mir. | ||
| ---- | ---- | ||
| [[https:// | [[https:// | ||