Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| modul:m320_2024:learningunits:lu02:datahiding [2024/06/26 07:19] – msuter | modul:m320_2024:learningunits:lu02:datahiding [2025/11/17 08:33] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 5: | Zeile 5: | ||
| </ | </ | ||
| - | Im UML-Diagramm werden daher die Attribute mit dem Modifikator << | + | Im UML-Diagramm werden daher die Attribute mit dem Modifikator << |
| {{: | {{: | ||
| Zeile 42: | Zeile 42: | ||
| </ | </ | ||
| - | ==== data hiding bei Python ==== | + | ===== data hiding bei Python ===== |
| + | ==== Attribute ==== | ||
| Attribute die im Klassendiagramm als '' | Attribute die im Klassendiagramm als '' | ||
| Dies erfolgt durch folgende Schreibweise | Dies erfolgt durch folgende Schreibweise | ||
| <code Python> | <code Python> | ||
| - | self._das_gekapselte_Attribut | + | self._attributname |
| </ | </ | ||
| Zeile 54: | Zeile 56: | ||
| Es wird aber nicht durch den Python-Interpreter verhindert, dass trotzdem auf solche Attribute zugegriffen wird. | Es wird aber nicht durch den Python-Interpreter verhindert, dass trotzdem auf solche Attribute zugegriffen wird. | ||
| </ | </ | ||
| + | |||
| + | ==== Property und Setter ==== | ||
| + | Durch den Einsatz von '' | ||
| + | Als Beispiel betrachten wir das Attribut '' | ||
| + | |||
| + | <code python [enable_line_numbers=" | ||
| + | class Door: | ||
| + | def __init__(self, | ||
| + | self.color = base_color | ||
| + | |||
| + | @property | ||
| + | def color(self): | ||
| + | """ | ||
| + | getter-Methode für die Eigenschaft color | ||
| + | :return: die Farbe des Objekts | ||
| + | """ | ||
| + | return self._color | ||
| + | |||
| + | @color.setter | ||
| + | def color(self, new_color): | ||
| + | """ | ||
| + | setter-Methode für die Eigenschaft color | ||
| + | :param new_color: | ||
| + | """ | ||
| + | self._color = new_color | ||
| + | | ||
| + | if __name__ == ' | ||
| + | some_door = Door(None, ' | ||
| + | print(f' | ||
| + | some_door.color = ' | ||
| + | print(f' | ||
| + | </ | ||
| + | |||
| + | Auf den ersten Blick scheint es, als würde das Programm in Zeile 24 direkt auf das Attribut '' | ||
| + | Tatsächlich erkennt Python die Decorators '' | ||
| ---- | ---- | ||
| - | [[https:// | + | [[https:// |