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)
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