Listing "Klasse Medium"

Objekte vereinen zusammengehörige Eigenschaften und Funktionen. (Manche bevorzugen es, bei Funktionen, die zu Klassen oder Objekten gehören, von Methoden zu sprechen. Ich persönlich halte diese Unterscheidung für wenig hilfreich und verwende sie nicht.)

Klassen sind Baupläne von Objekten.

Angenommen, du möchtest ein Programm für eine Bücherei schreiben. Dann könnte ein erster Entwurf für eine Klasse für Medien (also Bücher, Filme, Comics...) so aussehen.

Die Funktion __init__() ist der sogenannte Konstruktor. Der wird immer aufgerufen, wenn du ein neues Objekt der Klasse Medium erzeugst, etwa indem du m1 = Medium("Franz Kafka", "Das Schloß") ausführst. Sie erwartet zwei Argumente: urheber und titel. Das Argument self verweist immer auf das Objekt selbst, in diesem Fall m1. Es muss bei der Anwendung des Konstruktors nicht hingeschrieben werden.

Die Funktion kommentiere hängt jeweils einen Kommentar in die Liste self.kommentare an.

class Medium:
    
    def __init__(self, urheber, titel):
        self.urheber = urheber
        self.titel = titel
        self.kommentare = []
        
    def kommentiere(self, kommentar):
        self.kommentare.append(kommentar)

        
m1 = Medium("Franz Kafka", "Das Schloß")

m1.kommentiere("Ein düsteres, aber interessantes Buch!")
m1.kommentiere("Ich kann damit nichts anfangen.")
m1.kommentiere("Weltliteratur vom feinsten.")

print(m1.kommentare)
#=> ['Ein düsteres, aber interessantes Buch!', 'Ich kann damit nichts anfangen.', 'Weltliteratur vom feinsten.']

m2 = Medium("Chris Buck, Jennifer Lee", "Die Eiskönigin")

m2.kommentiere("Ein wunderschöner Film mit tollen Songs!")
m2.kommentiere("Die Charaktere sind liebenswert und gut gemacht.")
m2.kommentiere("Mir ist das zu kitschig.")

print(m2.kommentare)
#=> ['Ein wunderschöner Film mit tollen Songs!', 'Die Charaktere sind liebenswert und gut gemacht.', 'Mir ist das zu kitschig.']
 
Listing "Vererbung"

In manchen Fällen ist es sinnvoll, zunächst eine Basisklasse zu definieren, von der dann andere Klassen erben können. In diesem Beispiel definiert die Basisklasse Medium die Eigenschaften urheber und titel und die funktion kommentiere.

Die Klassen Buch und Film erben von der Basisklasse Medium, und fügen aber unterschiedliche Eigenschaften (dauer und seitenzahl) hinzu.

super.__init__() verweist auf den Konstruktor der Basisklasse.

class Medium:
    
    def __init__(self, urheber, titel):
        self.urheber = urheber
        self.titel = titel
        self.kommentare = []

    def kommentiere(self, kommentar):
        self.kommentare.append(kommentar)
 
   
 # Definition, der Klasse Buch, die von Medium erbt:   
class Buch(Medium):
    
    def __init__(self, urheber, titel, seitenzahl):
        super().__init__(urheber, titel)
        self.seitenzahl = seitenzahl
 

 # Definition, der Klasse Film, die von Medium erbt:   
class Film(Medium):
    
    def __init__(self, urheber, titel, dauer):
        super().__init__(urheber, titel)
        self.dauer = dauer
        
        
m1 = Buch("Franz Kafka", "Das Schloß", 368)

print(m1.seitenzahl)
#=> 368

m2 = Film("Chris Buck, Jennifer Lee", "Die Eiskönigin", 102)

print(m2.dauer)
#=> 102

Zuletzt geändert: Dienstag, 4. Februar 2025, 05:45