Kapitel 14
Systemfunktionen
410
Nach diesen Anweisungen im interaktiven Modus wird die Standardausgabe vom Objekt
sprachausgabe der Klasse Sprachausgabe übernommen. Dessen write()-Methode sorgt
dafür, dass der auszugebende Text wie gewohnt im Shell-Fenster erscheint (
#1), aber zusätz-
lich noch vorgelesen wird (
#2). Bei der Eingabe
hören und sehen Sie das Ergebnis 14.
14.1.3 Die Objektverwaltung beobachten mit getrefcount()
Man muss unterscheiden zwischen Namen und Objekten. Ein und dasselbe Objekt kann
mehrere Namen besitzen. Mit der Funktion
sys.getrefcount() können Sie feststellen,
wie viele Namen (Referenzen) zu einem Objekt existieren. Die Funktion liefert eine ganze
Zahl, die um eins größer ist, als man erwartet. Denn der Funktionsaufruf selbst enthält auch
eine Referenz auf das Objekt, die mitgezählt wird. Beispiel:
Wenn in Zuweisungen weitere Namen für das Objekt geschaffen werden, erhöht sich die
Zahl, die
sysgetrefcount() zurückgibt:
Eine del-Anweisung löscht nicht das Objekt, sondern nur einen Namen. Entsprechend
sinkt die Zahl der Referenzen des Objektes. Erst wenn auch die letzte Referenz gelöscht ist,
beseitigt die garbage collection (Müllabfuhr) des Laufzeitsystems das Objekt selbst.
Vielleicht überrascht Sie das Ergebnis folgender Anweisung:
>>> 12 + 2
>>> import sys
>>> class Ding:
pass
>>> a = Ding() # Objekt der Klasse Ding mit Namen a
>>> sys.getrefcount(a)
2
>>> b = c = a # weitere Namen für das gleiche Objekt
>>> sys.getrefcount(a)
4
>>> sys.getrefcount(b)
4
>>> del b
>>> sys.getrefcount(a)
3
>>> sys.getrefcount(10)
45

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.