LU12b - Klassen definieren

Eine Klasse ist ein Bauplan, der den Aufbau von Objekten definiert.

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:

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.

...
 
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.

...
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.


© Marcel Suter

  • modul/m319/learningunits/lu12/klasse.txt
  • Zuletzt geändert: 2024/03/28 14:07
  • von 127.0.0.1