Verwenden des gleichen Dekorators (mit Argumenten) mit Funktionen und Methoden
Ich habe versucht, einen Decorator zu erstellen, der sowohl mit Funktionen als auch mit Methoden in Python verwendet werden kann. Das alleine ist nicht so schwer, aber wenn man einen Dekorateur erstellt, der Argumente akzeptiert, scheint es so zu sein.
class methods(object):
def __init__(self, *_methods):
self.methods = _methods
def __call__(self, func):
def inner(request, *args, **kwargs):
print request
return func(request, *args, **kwargs)
return inner
def __get__(self, obj, type=None):
if obj is None:
return self
new_func = self.func.__get__(obj, type)
return self.__class__(new_func)
Der obige Code umschließt die Funktion / Methode korrekt, aber im Fall einer Methode ist derrequest
Das Argument ist die Instanz, auf der es ausgeführt wird, und nicht das erste Nicht-Selbst-Argument.
Gibt es eine Möglichkeit, festzustellen, ob der Dekorator auf eine Funktion anstatt auf eine Methode angewendet wird, und entsprechend zu verfahren?