So ist ein nicht-funktionierendes Beispiel das, was zeigt Ich versuche, bei bekommenPython Dekorateure mit Instanz-Level-Informationen
class TestClass(object):
def require_debug_mode(self, f):
def func_wrapper(*args, **kwargs):
if self.debug_mode:
return f(*args, **kwargs)
return func_wrapper
def __init__(self, debug_mode):
self.debug_mode = debug_mode
@require_debug_mode
def print_message(self, msg):
print msg
Sie können die gewünschten print_message
wie folgt neu schreiben:
def print_message(self, msg):
if self.debug_mode:
print msg
Ich möchte im Wesentlichen in der Lage sein, Methoden zu dekorieren, die bestimmte Überprüfungen durchführen (ohne diese Überprüfung in jeder Methode zu wiederholen, die sie verwenden könnte). Diese Prüfungen benötigen jedoch Zugriff auf Informationen auf Instanzebene. Ist das überhaupt möglich?
Ja, es ohne weiteres möglich ist. Sie haben gerade den Parameter 'self' an die falsche Stelle gesetzt. Es ist die Funktion _inner_, die den Parameter self benötigt. –