Ich möchte, dass verschiedene Funktionen nur ausführbar sind, wenn der angemeldete Benutzer die erforderliche Berechtigungsstufe hat.
Um mein Leben komplexer zu machen, möchte ich Dekorateure verwenden. Im Folgenden habe ich versucht, das Attribut permission
auf 'dekorierte' Funktionen zu setzen - wie unten gezeigt.
Aber wenn ich das tue:
%Vor% Ich erhalte einen Fehler 'function' object has no attribute 'permission_required'
Was vermisse ich?
Sie setzen das Attribut in der inneren (Wrapper) -Funktion. Sie benötigen keine Wrapper-Funktion überhaupt :
%Vor%Ihr Dekorator muss etwas zurückgeben, das die ursprüngliche Funktion ersetzt. Die ursprüngliche Funktion selbst (mit dem hinzugefügten Attribut) ist dafür geeignet, weil Sie nur ein Attribut hinzufügen wollten.
Wenn Sie noch einen Wrapper benötigen, setzen Sie das Attribut stattdessen auf die Wrapper-Funktion :
%Vor%Immerhin ersetzen Sie die umbrochene Funktion durch den vom Decorator zurückgegebenen Wrapper, also das Objekt, nach dem Sie suchen, um das Attribut zu aktivieren.
Tags und Links python attributes decorator python-decorators function-attributes