Fange Ausnahmen in einer Klasse ab

Ist es möglich, einen Ausnahmehandler zu schreiben, um die Laufzeitfehler abzufangen, die von ALLEN Methoden in der Klasse generiert werden? Ich kann es tun, indem ich jeden mit try / except umgebe:

class MyError(Exception):
    def __init__(self, obj, method):
        print 'Debug info:', repr(obj.data), method.__name__
        raise

class MyClass:
    def __init__(self, data):
        self.data = data

    def f1(self):
        try:
            all method code here, maybe failing at run time
        except:
            raise MyError(self, self.f1)

Ich frage mich, ob es einen allgemeineren Weg gibt, um dasselbe zu erreichen - für jeden Fehler, der irgendwo in der Klasse auftritt. Ich möchte auf die Klassendaten zugreifen können, um einige Debug-Informationen auszudrucken. Wie erhalte ich den fehlgeschlagenen Methodennamen (f1 im Beispiel)?

Aktualisieren: danke an alle für die aufschlussreichen antworten, die idee des dekorateurs scheint der richtige weg zu sein. Informationen zum Risiko, ALLE Ausnahmen einzufangen: araise Aussage in derexcept Branch sollte die Ausnahme erneut auslösen, ohne Informationen zu verlieren, nicht wahr? Deshalb habe ich es auch in MyError abgelegt ...

Antworten auf die Frage(3)

Ihre Antwort auf die Frage