Hier ist also eine Art seltsamer / interessanter Ansatz, bei dem Sie nur Foo
ändern müssen. Die Idee ist, dass ein neuer Decorator erstellt wird, der die baz
Dekoration verzögert, bis die Funktion zum ersten Mal mit Caching aufgerufen wird auf den Klassennamen, so dass es nur einmal passiert.
Beachten Sie, dass dies auch eine Dummy-Implementierung für baz
enthält, die nur das angegebene Argument frob
ausgibt, aber dieser Ansatz sollte gut funktionieren, ohne dass baz
:
Ich musste auch ein self
Argument zu oof
hinzufügen, basierend auf der Annahme, dass oof
eine Methode ist, wenn baz
auch die Funktion in eine statische Methode umwandelt. Ich bin mir nicht sicher, ob dieser Ansatz funktioniert .
Sie können die undekorierte Version von oof
beibehalten, nennen wir sie _oof_raw
und wickeln Sie sie erneut in Ihre Unterklassendefinition ein. Um die undekorierte Version beizubehalten, müssen Sie "manuell" dekorieren, d. H. Den% syntaktischen Zucker @
nicht verwenden.
Tags und Links python