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 [2024/08/12 06:56] (aktuell) – msuter | ||
---|---|---|---|
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:// |