no way to compare when less than two revisions
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| — | de:modul:m319:learningunits:lu12:property [2025/06/23 07:45] (aktuell) – ↷ Seite von modul:m319:learningunits:lu12:property nach de:modul:m319:learningunits:lu12:property verschoben msuter | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== LU12d - Property (erweitert) ====== | ||
| + | <WRAP center round info 60%> | ||
| + | Dieses Thema ist ein Blick in die Objektorientierte Programmierung im Modul 320. | ||
| + | Mit '' | ||
| + | Dieses Prinzip nennt sich '' | ||
| + | </ | ||
| + | |||
| + | ===== property und setter ===== | ||
| + | <code python> | ||
| + | ... | ||
| + | @property | ||
| + | def firstname(self): | ||
| + | return self._firstname | ||
| + | |||
| + | @firstname.setter | ||
| + | def firstname(self, | ||
| + | self._firstname = value | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | |||
| + | Wenn wir eine Klasse programmieren, | ||
| + | Die Kontrolle ob und wie die Werte der Attribute geändert werden können soll in der Hand der Klasse bleiben. | ||
| + | Deshalb schreiben wir zu jedem Attribut eine //Getter-// und eine // | ||
| + | |||
| + | Will ein andere Programmteil den Wert eines Attributs lesen, erfolgt dies über die sogenannte '' | ||
| + | Diese Methode wird mit dem Decorator '' | ||
| + | Im einfachsten Fall gibt diese Methode einfach den Wert des Attributs an den Aufrufer zurück. | ||
| + | **Beachten Sie den Underscore vor dem Variablennamen, | ||
| + | |||
| + | In komplexeren Klassen werden einzelne Getter auch eine Verarbeitungslogik beinhalten. | ||
| + | Für unsere Programme reichen aber einfache Getter. | ||
| + | |||
| + | Um den Wert eines Attributs zu ändern, stellt unsere Klasse eine '' | ||
| + | Diese Methode wird mit '' | ||
| + | Deren Aufgabe ist es, den Wert eines Attributs zu ändern. | ||
| + | Auch hier beschränken wir uns vorerst auf die Grundaufgabe: | ||
| + | **Beachten Sie den Underscore vor dem Variablennamen, | ||
| + | |||
| + | <WRAP center round info 60%> | ||
| + | Um das Erstellen von '' | ||
| + | Eine kurze Anleitung zum Erstellen eines solchen Live Templates finden Sie unter [[https:// | ||
| + | </ | ||
| + | |||
| + | Die vollständige Klasse würde dann so aussehen: | ||
| + | |||
| + | <file python member.py> | ||
| + | from dataclasses import dataclass | ||
| + | |||
| + | |||
| + | @dataclass | ||
| + | class Member: | ||
| + | """ | ||
| + | a club member | ||
| + | """ | ||
| + | firstname: str | ||
| + | lastname: str | ||
| + | address: str | ||
| + | place: str | ||
| + | zip_code: str | ||
| + | entry_year: int | ||
| + | birth_year: int | ||
| + | honorary_member: | ||
| + | |||
| + | @property | ||
| + | def firstname(self): | ||
| + | return self._firstname | ||
| + | |||
| + | @firstname.setter | ||
| + | def firstname(self, | ||
| + | self._firstname = value | ||
| + | |||
| + | @property | ||
| + | def lastname(self): | ||
| + | return self._lastname | ||
| + | |||
| + | @lastname.setter | ||
| + | def lastname(self, | ||
| + | self._lastname = value | ||
| + | |||
| + | @property | ||
| + | def address(self): | ||
| + | return self._address | ||
| + | |||
| + | @address.setter | ||
| + | def address(self, | ||
| + | self._address = value | ||
| + | |||
| + | @property | ||
| + | def place(self): | ||
| + | return self._place | ||
| + | |||
| + | @place.setter | ||
| + | def place(self, value): | ||
| + | self._place = value | ||
| + | |||
| + | @property | ||
| + | def zip_code(self): | ||
| + | return self._zip_code | ||
| + | |||
| + | @zip_code.setter | ||
| + | def zip_code(self, | ||
| + | self._zip_code = value | ||
| + | |||
| + | @property | ||
| + | def birth_year(self): | ||
| + | return self._birth_year | ||
| + | |||
| + | @birth_year.setter | ||
| + | def birth_year(self, | ||
| + | self._birth_year = value | ||
| + | |||
| + | @property | ||
| + | def entry_year(self): | ||
| + | return self._entry_year | ||
| + | | ||
| + | @entry_year.setter | ||
| + | def entry_year(self, | ||
| + | self._entry_year = value | ||
| + | |||
| + | @property | ||
| + | def honorary_member(self): | ||
| + | return self._honorary_member | ||
| + | |||
| + | @honorary_member.setter | ||
| + | def honorary_member(self, | ||
| + | self._honorary_member = value | ||
| + | |||
| + | if __name__ == ' | ||
| + | test_person = Person() | ||
| + | test_person.firstname = ' | ||
| + | print(test_person) | ||
| + | </ | ||