283
10.2
Definition von Klassen
Abb. 10.2: Das UML-Symbol für die Klasse Geld
10.2 Definition von Klassen
Der syntaktische Aufbau einer Klassendefinition bei Python wird durch folgende Gramma-
tik-Regeln festgelegt:
Eine Klassendefinition besteht aus zwei Teilen, einem Kopf und einem Körper:
Der Kopf beginnt mit dem Schlüselwort
class, danach kommt der Name der Klasse, optio-
nal kann in Klammern eine Liste von Oberklassen folgen, dann ein Doppelpunkt. Oberklas-
sen (oder Basisklassen) sind Klassen, von denen die neue Klasse Attribute und Methoden
erbt (mehr dazu in Abschnitt 10.7). Die Standardklasse
object ist die voreingestellte Basis-
klasse für alle neuen Klassen. Als Klassenname wählt man üblicherweise ein Substantiv im
Singular und schreibt ihn mit großem Anfangsbuchstaben. Beispiele für syntaktisch kor-
rekte Kopfzeilen von Klassendefinitionen sind:
Der Körper einer Klassendefinition folgt nach dem Doppelpunkt der Kopfzeile und besteht
aus einer Folge von Anweisungen. Im Extremfall enthält er allein die leere Anweisung
pass,
die nichts bewirkt. Eine einfache gültige Klassendefinition ist
Diese Klasse ist zwar syntaktisch korrekt definiert, aber völlig sinnlos. In der Praxis besteht
der Körper einer Klassendefinition aus folgenden Komponenten:
classdef ::= "class" classname [inheritance] ":"
anweisungsfolge
inheritance ::= "(" [expression_list] ")"
classname ::= identifier
class MeineKlasse:
class MeineKlasse(object):
class MeineKlasse(Oberklasse):
class MeineKlasse(Oberklasse1, Oberklasse2):
class C(object):
p a s s
Klassenname
A
ttributliste
Operationsliste
(Methoden)
Geld
wechselkurs
betrag
waehrung
add()
getEuro()
Klassenattribut
Kapitel 10
Definition eigener Klassen
284
Definition der Klassenattribute (Attribute, die für alle Objekte der Klasse gelten) im fol-
genden Format:
Definition der Konstruktormethode __init__(). Sie wird aufgerufen, wenn ein Objekt
der Klasse instanziiert wird. In der Konstruktormethode werden Objektattribute mit
einem Anfangswert belegt.
Definition weiterer Methoden (Operationen).
Einzelheiten erklären wir an dem bereits erwähnten Beispiel Geld. Wir definieren eine
Klasse, die Geldbeträge modelliert und deren Struktur im UML-Klassensymbol in Abbil-
dung 10.2 beschrieben ist. Der Name der Klasse ist
Geld. Instanzen der Klasse repräsentie-
ren konkrete Geldbeträge in verschiedenen Währungen.
#1: Im Kopf der Klassendefinition steht der Klassenname. Beachten Sie, dass er ein Substan-
tiv im Singular ist und mit einem Großbuchstaben beginnt.
#2: Das Klassenattribut wechselkurs ist ein Dictionary. Schlüssel sind die internationalen
Abkürzungen für vier Währungen:
USD: US-Dollar, GBP: Britisches Pfund, JPY: Japanischer Yen, EUR: Euro.
Jedem Schlüssel ist als Wert eine Gleitkommazahl zugeordnet, die den Geldwert einer Ein-
heit der jeweiligen Währung in Euro angibt (Stand: 29. Mai 2003).
#3: Die Methode __init__() bewirkt, dass ein neues Objekt nach dem Bauplan der Klasse
Geld generiert wird. Man bezeichnet sie deshalb als Konstruktormethode. Die Parameter-
klassenattribut = wert
# geld.py
cla s s Ge l d ( obj e ct): #1
wechselkurs ={'USD':0.84998,
'G B P ':1. 3 948 0 ,
'E U R ':1. 0 ,
'J P Y ':0. 0 071 6 8} #2
def __init__(self, waehrung, betrag): #3
self.waehrung = waehrung
self.betrag = float(betrag)
de f g etE u ro(s e lf) : #4
r e turn self.betrag*self.wechselkurs[self.waehrung]
de f a dd ( s elf, g eld ) : #5
summe_in_Euro = self.getEuro()+geld.getEuro()
summe = Geld(self.waehrung,
summe_in_Euro/self.wechselkurs[self.waehrung])
r e turn s umm e

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.