Wissensdatenbank von GCSoft

>> Wissensdatenbank / Python 3

Das Laufzeitmodell

Referenz und Instanz

Instanz

Eine Instanz ist ein konkretes Datenobjekt im Speicher, das nach Vorlage eines bestimmten Datentyps erzeugt wurde.

Referenz

Referenz bedeutet Verweis. Der Variablenname (symbolischer Name) ist die Referenz auf eine Instanz.
a = 1337

Es können weitere Referenzen zu bereits referenzierten Instanzen erzeugt werden.
referenz1 = 1337
referenz2 = referenz1

Es gibt nach wie vor nur eine Instanz mit dem Wert 1337.

referenz1 = 2674
Die Variable referenz2 weist weiterhin auf den Wet 1337!

Die Struktur von Instanzen

Jede Instanz in Python besteht aus ihrem Datentyp, ihrem Wert und ihrer Identität.

Datentyp

Mit Hilfe von type kann der Datentyp ermittelt werden.
type(1337)

Datentypen sind zum Beispiel int, str.
Eine Referenz hat keinen Typ und kann Instanzen beliebiger Typen referenzieren.

Wert

Was den Wert einer Instanz konkret ausmacht, hängt von ihrem Typ ab.
Mit dem Operator == können Instanzen bezüglich ihres Wertes verglichen werden.

Identität

Die Identität einer Instanz dient dazu, sie von allen anderen Instanzen zu unterscheiden.
Sie ist für jede Instanz programmweit eindeutig und kann sich nicht ändern.
Die Identität ist eine Ganzzahl und kann mithilfe der Funktion id ermittelt werden.
Der Ausdruck id(referenz1) == id(referenz2) kann mit dem Operator is abgekürzt werden: referenz1 is referenz2.

Garbage Collector

Nicht mehr benötigter Speicher wird automatisch von der Garbage Collection freigegeben.

Speicher selbst freigeben

Eine Referenz kann mittels der del-Anweisung freigegeben werden (z.B. del var1).
Sind sämtliche Referenzen einer Instanz freigegeben, übernimmt die Garbage Collection.

Mutable vs. immutable Datentypen

Instanzen eines mutablen Typs sind dazu in der Lage, nach ihrer Erzeugung andere Werte anzunehmen,
während dies bei immutablen Datentypen nicht der Fall ist.
Wird eine mutable Instanz verändert, zeigen alle Referenzen dieser Instanz weiterhin auf diese Instanz mit dem veränderten Wert.

Immutable Datentypen

Ganzzahlen, Strings