Ereignisse "vor / nach Funktionsaufruf" für alle Funktionen in Klasse @ abfang

Gibt es eine Möglichkeit, "Vorher / Nachher-Funktionsaufruf" -Ereignisse für alle Funktionen in der Klasse abzufangen, ohne jede dieser Funktionen zu dekorieren? Kann eine Klasse Dekorateur sein? Mit anderen Worten, für einen solchen Code möchte ich folgende Ausgabe erhalten:

class Foo:
    def func1():
        print('1')

    def func2():
        print('2')

c = Foo()
c.func1()
c.func2()

# Output I would like to get:
# func1 called
# 1
# func1 finished
# func2 called
# 2
# func2 finished

Ich brauche es nicht für die Rückverfolgung. In einer Klasse, die mit asynchronen Funktionen arbeitet, muss ich wissen, ob eine Funktion aufgerufen wurde, bevor eine andere Funktion beendet wurde.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage