Używanie tego samego dekoratora (z argumentami) z funkcjami i metodami

Próbowałem stworzyć dekorator, który może być używany zarówno z funkcjami, jak i metodami w Pythonie. Samo to nie jest takie trudne, ale wydaje się, że podczas tworzenia dekoratora, który przyjmuje argumenty.

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)

Powyższy kod poprawnie opakowuje funkcję / metodę, ale w przypadku metodyrequest argument jest instancją, na której działa, a nie pierwszym argumentem innym niż własny.

Czy istnieje sposób na sprawdzenie, czy dekorator jest stosowany do funkcji zamiast metody, i czy odpowiednio postępuje?

questionAnswers(5)

yourAnswerToTheQuestion