LU12b - Klassen definieren
Eine Klasse ist ein Bauplan, der den Aufbau von Objekten definiert.
1 Klasse - 1 Datei
Es bietet sich an, für jede Klasse eine eigene Python-Datei zu erstellen.
Für die Klasse Member
sollte unsere Datei member.py
heissen.
Unsere Datei member.py
sieht so aus:
- 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: bool attended_meetings: list[str] if __name__ == '__main__': test_person = Member('Hans', 'Muster', 'Musterstrasse 1', 'Bern', '3000', 2010, 1990, False,['Hauptversammlung','Skitag']) test_person.firstname = 'Peter' print(test_person)
Diese Definition einer Klasse ist wie ein Bauplan für Clubmitglieder. Der Bauplan definiert, aus welchen Bestandteilen ein Clubmitglied besteht.
Schauen wir uns den Code Stück für Stück an:
dataclass
from dataclasses import dataclass @dataclass class Member: """ a club member """ ...
dataclass ist ein Pythonmodul für die Definition von Klassen, die hauptsächlich Daten verwalten sollen.
Der Decorator @dataclass
kennzeichnet unsere Klasse als Datenklasse.
Diese Annotation muss direkt vor dem class
-Befehl stehen.
Um eine Klasse zu definieren, verwenden wir den Befehl class Member
.
Beachten Sie die Codingstandards: Im Gegensatz zu Variablen, werden Klassennamen mit einem Grossbuchstaben geschrieben.
Ein kurzer Kommentarblock zwischen dreifachen Anführungszeichen („
) erklärt den Sinn und Zweck dieser Klasse.
Attribute
... class Member: ... firstname: str lastname: str address: str place: str zip_code: str entry_year: int birth_year: int honorary_member: bool attended_meetings: list[str] ...
Attribute sind Variablen die im Kontext einer Klasse definiert werden. Diese Attribute sind in allen Funktionen innerhalb der Klasse verfügbar.
Nach dem class
-Befehl definieren wir die Attribute und deren Datentyp.
__main__ ?
... if __name__ == '__main__': test_person = test_person = Member('Hans', 'Muster', 'Musterstrasse 1', 'Bern', '3000', 2010, 1990, False) test_person.firstname = 'Peter' print(test_person)
Eine Datenklasse ist nicht dafür gemacht, direkt ausgeführt zu werden. Zu Testzwecken können wir ein paar Objekte erstellen und ausgeben.
Klassen sind keine eigenständigen Pythonskripts, die selbständig ausführbar sind.
Wir können aber zu Testzwecken eine Klasse direkt aufrufen.
In diesem Codeblock erstellen wir ein Objekt, setzen das Attribut firstname
und geben das Objekt aus.