Exkurs - Objekte in Python
Datenobjekte in Python
Jedes Datenobjekt in Python hat eine Identitätsnummer, einen Typ und einen Zustand.
Ein Objekt der Klasse Ampel
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.
>>> a = Ampel('rot')
>>> a.zustand
'rot'
>>> id(a)
20311856
>>> type(a)
<class '__main__.ampel'="">
</class>
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 Zeichenkette wie z.B. der Zeichenkette 'rot' ist ein unveränderbares Objekt. Sein Wert bzw. Zustand kann nicht verändert werden. Wird eine neue Zeichenkette benötigt, so wird sie von einem neuen Objekt verwaltet.
>>> a1 = 'rot'
>>> a2 = a1
>>> a1
'rot'
>>> a2
'rot'
>>> id(a1)
52607104
>>> id(a2)
52607104
>>> a1 = 'rotgelb'
>>> a1
'rotgelb'
>>> a2
'rot'
>>> id(a1)
52606880
>>> id(a2)
52607104
Anders verhält es sich bei veränderbaren Objekten wie z.B. Objekten der Klasse Ampel
.
Mit Hilfe geeigneter Operationen lässt sich der Zustand
solcher Objekte verändern, ohne die Identität der Objekte zu verändern.
>>> a1 = Ampel('rot')
>>> a2 = a1
>>> a1.zustand
'rot'
>>> a2.zustand
'rot'
>>> id(a1)
52701392
>>> id(a2)
52701392
>>> a1.schalten()
>>> a1.zustand
'rotgelb'
>>> a2.zustand
'rotgelb'
>>> id(a1)
52701392
>>> id(a2)
52701392