Im allgemeinen Fall ist das nicht möglich, weil der example
Dekorator keine zur Laufzeit erkennbare Kurve zurücklassen kann - zum Beispiel könnte sein
Wenn Sie die Quelle für example
steuern, ist es natürlich einfach, die Funktionen, die sie schmückt, zu markieren oder aufzuzeichnen; Wenn Sie das nicht tun, ist es absolut unmöglich, das zu tun, was Sie wollen.
Da Sie angegeben haben, dass Sie die Kontrolle über den Wrapper-Code haben, hier ein Beispiel:
%Vor%Ich glaube nicht, dass es einen allgemeinen Weg gibt, da ein Decorator ein einfacher Funktionsaufruf ist. Ihr Code ist identisch mit diesem:
%Vor% Sie können wahrscheinlich bestimmte Dekoratoren durch Disassemblieren und Analysieren erkennen (mit dem dis
-Modul). Oder Sie könnten einfach die Quelldatei analysieren, obwohl das ein bisschen hässlich ist.
Warum wollen Sie sie überhaupt erkennen?
Möglicherweise finden Sie in dieser letzten Frage detaillierte Informationen zu 3 Möglichkeiten, dies zu tun:
Wie bekomme ich alle Methoden einer Python-Klasse mit gegebenem Decorator
Wenn Sie können, können Sie den Decorator zur Laufzeit anpassen, um festzustellen, welche Funktionen an ihn übergeben werden:
%Vor%Tags und Links python