Exkurs - Objekte in Python
Datenobjekte in Python
Jedes Datenobjekt in Python hat eine Identitätsnummer, einen Typ und einen Zustand.
Ein Objekt der Klasse Wuerfel
könnte etwa wie folgt beschrieben werden:
Die Identitätsnummer ist die Adresse des Objekts im Speicher. Sie ist eine Zahl, mit der man ein Datenobjekt eindeutig identifizieren kann.
Der folgende Python-Dialog zeigt, wie man Zustand, Identitätsnummer und Typ eines Objekts bestimmt.
>>> w = Wuerfel()
>>> w
<__main__.Wuerfel object at 0x0135DDB0>
>>> id(w)
20307376
>>> hex(20307376)
'0x135ddb0'
>>> type(w)
<class '__main__.wuerfel'>
Veränderbare und unveränderbare Objekte
In Python werden sämtliche Daten durch Objekte repräsentiert. Python unterscheidet zwischen veränderbaren und unveränderbaren Objekten.
Ein Objekt zur Darstellung einer Zahl wie z.B. der Zahl 2 ist ein unveränderbares Objekt. Sein Wert bzw. Zustand kann nicht verändert werden. Wird eine neue Zahl benötigt, so wird sie von einem neuen Objekt verwaltet.
>>> from random import randint
>>> w1 = randint(1, 6)
>>> w2 = w1
>>> w1
2
>>> w2
2
>>> id(w1)
507081248
>>> id(w2)
507081248
>>> w1 = randint(1, 6)
>>> w1
6
>>> w2
2
>>> id(w1)
507081376
>>> id(w2)
507081248
Anders verhält es sich bei veränderbaren Objekten wie z.B. Objekten der Klasse Wuerfel
.
Mit Hilfe geeigneter Operationen lässt sich der Zustand
solcher Objekte verändern, ohne die Identität der Objekte zu verändern.
>>> w1 = Wuerfel()
>>> w2 = w1
>>> w1.augen
2
>>> w2.augen
2
>>> id(w1)
50931920
>>> id(w2)
50931920
>>> w1.werfen()
>>> w1.augen
6
>>> w2.augen
6
>>> id(w1)
50931920
>>> id(w2)
50931920