
Hallo! Bastian Venthur wrote:
On 18.07.2007 12:09 schrieb Andreas Jung:
--On 18. Juli 2007 12:04:53 +0200 Bastian Venthur <venthur@debian.org> wrote:
ich hab irgendwo mal was über getter/setter für Python-Klassen gelesen. Irgendwie konnte man
instanz.variable = "foo"
machen und intern wurde aber eine Setterfunktion aufgerufen. Sowas könnte ich jetzt gut gebrauchen. Weis jemand wie das nochmal ging, bzw. wo ich das nachlesen kann? Ich glaube es hatte irgendwas mit Decorators zu tun, mit denen hab ich aber bisher noch nie gearbeitet. "Python Properties" sind Deine magischen Suchbegriffe:
Danke, properties hab ich gesucht. Da ich aber ziemlich viele Klassenvariablen habe würde diese Lösung meine Klasse allerdings unnötig aufblähen.
Eigentlich würde ich beim setzen (irgend)einer Klassenvariable nur eine Variable "dirty" auf False setzen wollen und bei der __str__-Methode je nach dirtyness entscheiden ob ich einen zuvor generierten string zurückgebe oder neu generieren muss:
def __str__(self): if not self.dirty: return self.s else: self.s = some_complicated_method_returning_a_string() self.dirty = false return self.s
Gibt es ne Möglichkeit bei jedem Schreibzugriff auf eine Klassenvariable eine bestimmte Funktion auszuführen?
Such mal nach dem "memoize" pattern, ich glaube, das ist das, was du in Wirklichkeit suchst. Stefan