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?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage