Kapitel 10
Definition eigener Klassen
288
Abb. 10.5: Anonymes Objekt
10.4 Zugriff auf Attribute – Sichtbarkeit
Attribute beschreiben die Merkmale eines Objektes. Objektattribute beziehen sich auf Eigen-
schaften individueller Objekte und werden bei Python durch Zuweisungen der Form
self.attribut = wert innerhalb des Konstruktors __init__() erzeugt. Klassenattribute
– gelegentlich auch Klassenvariablen genannt – sind dagegen Merkmale, die alle Objekte
einer Klasse besitzen. Sie sind von der Existenz eines Objektes der Klasse unabhängig und
werden durch eine Zuweisung der Form
attribut = wert innerhalb der Klassendeklara-
tion (aber außerhalb einer Methode) definiert. Objektattribute dagegen werden erst bei der
Instanziierung eines Objektes mit (individuellen) Werten belegt.
Der Zugriff auf Klassen- und Objektattribute kann eingeschränkt werden. Man spricht hier
auch von Sichtbarkeit und unterscheidet zwischen öffentlichen und privaten Attributen.
10.4.1 Öffentliche Attribute
Auf öffentliche Objektattribute kann man »von außen« lesend und schreibend zugreifen,
indem man hinter den Namen eines Objektes (Instanz) einen Punkt und dann den Namen
des Attributs schreibt:
objekt.attribut. Beispiele:
Analog kann auf ein öffentliches Klassenattribut zugegriffen werden. Man schreibt hinter den
Namen der Klasse einen Punkt und dann den Namen des Attributs:
Klasse.attribut. Im
folgenden Beispiel ändern wir das Attribut
wechselkurs der Klasse Geld ab. Der US-Dollar
wird auf 0.5 Euro abgewertet. Wie man sieht, übernimmt ein neu instanziiertes Objekt dieses
abgeänderte Klassenattribut.
Die Verwendung öffentlicher Attribute wird von vielen Informatikern insbesondere aus
dem Software-Engineering abgelehnt, weil damit das Geheimnisprinzip verletzt wird. Ein
Objekt sollte so wenig wie möglich über seinen internen Aufbau verraten. Öffentliche Attri-
>>> hundertEuro = Geld('EUR', 100)
>>> print(hundertEuro.betrag, hundertEuro.waehrung)
100.0 EUR
>>> Geld.wechselkurs['USD'] = 0.5
>>> print(Geld.wechselkurs)
{'JPY': 0.00716799, 'USD': 0.5, 'GBP': 1.3948, 'EUR': 1.0}
>>> zehnDollar = Geld('USD',10)
>>> print(zehnDollar.wechselkurs)
{'JPY': 0.00716799, 'USD': 0.5, 'GBP': 1.3948, 'EUR': 1.0}
:Geld
betrag = 200.0
waehrung = 'USD'

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.