[Python-de] Einklinken beim Zugriff auf eine bestimmte Variable

Christian Junker christianjunker at gmail.com
Mon Aug 29 00:07:23 CEST 2005


Hallo miteinander,

letztens hatte ich die Diskussion mit einem Kollegen welche Sprache
mächtiger ist:
Tcl oder Python.

Da ich Tcl zuvor nur vom Hörensagen kannte, und nichts weiter wusste
als dass in Tcl alle Variablen Strings sind, war ich sehr überrascht
als dieser mir zeigte wie elegant manche Dinge gemacht werden konnten.
Jedenfalls fand ich den Tcl 'trace' Befehl unglaublich bemerkenswert,
der es u.a. möglich macht das Verhalten einer Variablen in bestimmten
Situationen komplett zu steuern, und zwar indirekt.
Man kann z.B. eine Funktion schreiben die immer dann ausgeführt wird,
wenn diese eine Variable (die vorher natürlich bekannt sein muss, also
zuvor definiert sein muss) irgendwo eingelesen wird.

D.h. muss ein Statement die Variable x - oder besser deren Value -
lesen, so wird direkt vor dieser Operation die mit trace registrierte
selbst geschriebene Funktion aufgerufen, die dann z.B. eine Warnung
nach stdout ausspucken kann.

Ein Vergleichsfeature in Python fiel mir daraufhin nicht ein, ich
hatte nur die spezielle Methode __getattr__ im Kopf und den
property(...) Mechanismus, aber das Problem bei ihnen ist, dass sie
1.) nicht eine bestimmte Variable unter die Lupe nehmen können und 2.)
nur für Attribute einer Klasse gelten.

Gibt es überhaupt soetwas in Python und wenn ja wie heißt die Funktion
dazu? (ich hoffe, ich habe nichts offensichtliches übersehen)

-- 
Best Regards
Christian Junker