Eine Instanz ist ein konkretes Datenobjekt im Speicher, das nach Vorlage eines bestimmten Datentyps erzeugt wurde.
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!
Jede Instanz in Python besteht aus ihrem Datentyp, ihrem Wert und ihrer Identität.
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.
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.
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.
Nicht mehr benötigter Speicher wird automatisch von der Garbage Collection freigegeben.
Eine Referenz kann mittels der del-Anweisung freigegeben werden (z.B. del var1).
Sind sämtliche Referenzen einer Instanz freigegeben, übernimmt die Garbage Collection.
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.
Ganzzahlen, Strings