Frage zu __getattr__
Verfasst: Dienstag 14. Februar 2012, 19:52
Hallo zusammen,
ich möchte eine meiner Klassen thread sicher gestalten, dh. ich möchte ganz bestimmte Attribute absichern. Ich möchte jedoch nicht für jedes einzelne Attribut (oder Attributgruppen) Wrapper-methoden basteln die sich dann um das jeweilige Lock kümmern. Also das hier:
Was ich möchte ist dass das ganze so funktioniert, dass ich wie gewohnt auf die Attribute zugreife. Da hatte ich dann an __getattr__ gedacht, aber das funktioniert ja nur bei Attributen die nicht bereits existieren. Müsste ich das also so implementieren?
Oder gibt es da eine andere "magische" Variante?
PS: Wie ich in den Beispielen mit den Attributen umgehe ist nicht 100% das was ich vorhabe. Aber primär gehts mir auch nur um eine mögliche Alternative zur letzten Variante.
ich möchte eine meiner Klassen thread sicher gestalten, dh. ich möchte ganz bestimmte Attribute absichern. Ich möchte jedoch nicht für jedes einzelne Attribut (oder Attributgruppen) Wrapper-methoden basteln die sich dann um das jeweilige Lock kümmern. Also das hier:
Code: Alles auswählen
class Foo(object):
def __init__(self):
self.lock = RLock()
self.bar = None
def get_bar(self):
self.lock.aquire()
...was mit bar machen...
self.lock.release()
Code: Alles auswählen
class Foo(object):
def __init__(self):
self.lock = RLock()
self.__bar = None
def __getattr__(self, name):
if name == 'bar':
self.lock.aquire()
...was mit __bar machen....
self.lock.release()
PS: Wie ich in den Beispielen mit den Attributen umgehe ist nicht 100% das was ich vorhabe. Aber primär gehts mir auch nur um eine mögliche Alternative zur letzten Variante.