Decorator: Wert einer Instanz cachen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi

Ich würde gerne diesen Dekorator verwenden. Nur, dass mir nicht daran liegt die Übergabewerte für die Funktion zu cachen, sondern als Schlüssel die Werte einer Instanz meiner Klasse zu nehmen. Beispiel:

Code: Alles auswählen

class Foo(object):
    def __init__(self, value):
        self.value = value
    def bar(self. arg1, arg2):
        pass
Jetzt möchte ich gerne so dekorieren, dass der Aufruf von

Code: Alles auswählen

foo = Foo(42)
foo.bar(*args)
kontroliert, ob foo.value, bereits im Cache ist. Wie kann man das erreichen?

Gruß,
Christian
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

keine ahnung ob das mit diesem dekorator geht.

wenn ja, dann ist das doch eher nen hack.
ich würde das multiton pattern implementieren.
http://www.kinderpornos.info
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Vielleicht ist es zu offensichtlich, aber wie wäre es mit einem Klassenattribut?

Sonst hat man auch noch die __call__-Methode der Metaklassen, wenn es denn mal ganz ausgefallen werden soll.
Das Leben ist wie ein Tennisball.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Vielen Dank!

Ich war gerade mal draussen - ist ja auch schön heute - und das klärt den Kopf. Also habe ich mich entschlossen nicht hintendrum zu implementieren, sondern der Klasse einen Cache zu geben, so dass die Instanz weiß, welchen Status sie schon mal hatte. - Was in diesem Fall schon einigen Aufwand bedeutet. - Das ist in gewisser Weise ähnlich dem multiton Pattern, zumindest im Effekt.

Gruß,
Christian
Antworten