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:lu01:gleichartig [2024/06/25 14:11] – msuter | modul:m320_2024:learningunits:lu01:gleichartig [2025/06/23 07:45] (aktuell) – ↷ Links angepasst, weil Seiten im Wiki verschoben wurden msuter | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== LU01d - Ist Klasse gleich Klasse? ====== | ====== LU01d - Ist Klasse gleich Klasse? ====== | ||
| - | ** TODO SuMa - Python-Beispiel korrigieren ** | ||
| Warum stellen wir uns diese Frage? | Warum stellen wir uns diese Frage? | ||
| - | Sie haben im ([[modul: | + | Sie haben im ([[de:modul: |
| Dabei haben Sie eine Klasse als Ansammlung vieler Attribute kennengelernt. | Dabei haben Sie eine Klasse als Ansammlung vieler Attribute kennengelernt. | ||
| Man nennt solche Klassen (informell) auch Datenklassen (POPO - Plain Old Python Object). | Man nennt solche Klassen (informell) auch Datenklassen (POPO - Plain Old Python Object). | ||
| Zeile 70: | Zeile 69: | ||
| # Durch den Decorator @dataclass wird unter anderem der Konstruktor generiert. | # Durch den Decorator @dataclass wird unter anderem der Konstruktor generiert. | ||
| + | @property | ||
| + | def street(self): | ||
| + | return self._street | ||
| + | @street.setter | ||
| + | def street(self, | ||
| + | self._street = value | ||
| - | """ | + | @property |
| - | Hier folgt die main-Methode über die das Programm ausgeführt werden kann. | + | def number(self): |
| - | """ | + | |
| - | if __name__ == ' | + | @number.setter |
| - | # Instanzieren eines Objektes über den Konstruktor. | + | |
| - | | + | self._postal_code = value |
| - | | + | |
| - | | + | |
| - | | + | |
| - | postal_code=9999, | + | |
| - | city=' | + | |
| - | # | + | @postal_code.setter |
| - | | + | def postal_code(self, value): |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | address.postal_code = 1001 # nutzen der set-Methoden | + | |
| - | | + | |
| - | | + | |
| + | | ||
| + | self._city = value | ||
| </ | </ | ||
| |style=" | |style=" | ||
| <code Python> | <code Python> | ||
| from address import Address | from address import Address | ||
| + | |||
| class Human: | class Human: | ||
| Zeile 106: | Zeile 114: | ||
| # Mehr zur Bedeutung des Konstruktors folgt später. | # Mehr zur Bedeutung des Konstruktors folgt später. | ||
| def __init__(self, | def __init__(self, | ||
| - | self._name | + | self._name = name |
| - | self._weight | + | self._weight = weight |
| self._eye_color = eye_color | self._eye_color = eye_color | ||
| # hier können ganz viele weitere Attribute stehen, die durch | # hier können ganz viele weitere Attribute stehen, die durch | ||
| # den Konstruktor initialisiert werden. | # den Konstruktor initialisiert werden. | ||
| - | self._address = one_address #eine Referenz zu einem Address-Objekt | + | self._address = one_address |
| + | |||
| + | def __repr__(self): | ||
| + | return f' | ||
| # Attribute werden über get-Methoden gelesen. | # Attribute werden über get-Methoden gelesen. | ||
| Zeile 123: | Zeile 134: | ||
| def name(self): | def name(self): | ||
| return self._name | return self._name | ||
| + | |||
| + | @property | ||
| + | def eye_color(self): | ||
| + | return self._eye_color | ||
| @property | @property | ||
| Zeile 140: | Zeile 155: | ||
| # beeinflussen. | # beeinflussen. | ||
| def eat(self, what_ever): | def eat(self, what_ever): | ||
| - | self._weight += 0.3 | + | |
| + | </ | ||
| + | |- | ||
| + | |style=" | ||
| + | <code python> | ||
| + | """ | ||
| + | Hier folgt die main-Methode über die das Programm ausgeführt werden kann. | ||
| + | """ | ||
| + | if __name__ == ' | ||
| + | # Instanzieren eines Objektes über den Konstruktor. | ||
| + | # my_home ist eine Objekt-Variable, | ||
| + | # der Klasse ausführt, um das Objekt zu erzeugen | ||
| + | my_home = Address(street=' | ||
| + | number=' | ||
| + | postal_code=9999, | ||
| + | city=' | ||
| + | |||
| + | my_home.postal_code = 1001 # nutzen der setter-Methode | ||
| + | # Ausgabe der Werte über impliziten Aufruf der jeweiligen property-Methoden. | ||
| + | print(' | ||
| + | print(f' | ||
| + | f' | ||
| + | |||
| + | print(my_home) | ||
| + | </ | ||
| + | |style=" | ||
| + | <code python> | ||
| """ | """ | ||
| Und nun ein Stück Programmcode, | Und nun ein Stück Programmcode, | ||
| """ | """ | ||
| if __name__ == ' | if __name__ == ' | ||
| - | address = Address(street=' | + | address = Address(street=' |
| - | number=' | + | number=' |
| - | postal_code=9999, | + | postal_code=9999, |
| city=' | city=' | ||
| - | milli | + | milli = Human(' |
| - | milli.eat(' | + | milli.eat(' |
| print(f' | print(f' | ||
| print(f' | print(f' | ||
| - | print(f' | + | print(f' |
| + | |||
| + | print(milli) | ||
| </ | </ | ||
| - | |||
| |- | |- | ||
| |style=" | |style=" | ||
| Zeile 162: | Zeile 204: | ||
| <code > | <code > | ||
| Werte des Objekts address: | Werte des Objekts address: | ||
| - | Musterstrasse 11A 9999 Musterdorf | ||
| Musterstrasse 11A 1001 Musterdorf | Musterstrasse 11A 1001 Musterdorf | ||
| + | Address(street=' | ||
| </ | </ | ||
| |style=" | |style=" | ||
| Zeile 169: | Zeile 211: | ||
| < | < | ||
| Name: Milli | Name: Milli | ||
| - | Adresse: Address(street=' | + | Adresse: Address(street=' |
| Gewicht: 50.3 | Gewicht: 50.3 | ||
| + | Human(name=' | ||
| </ | </ | ||
| - | |||
| |- | |- | ||
| Zeile 181: | Zeile 223: | ||
| Ebenso könenn Sie feststellen, | Ebenso könenn Sie feststellen, | ||
| - | Anmerkung: Sie können natürlich auch einer " | + | Anmerkung: Sie können natürlich auch einer " |
| ---- | ---- | ||
| - | [[https:// | + | [[https:// |