Usando o mesmo decorador (com argumentos) com funções e métodos
Eu tenho tentado criar um decorador que pode ser usado com funções e métodos em python. Isso por si só não é tão difícil, mas ao criar um decorador que aceita argumentos, parece ser.
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)
O código acima envolve a função / método corretamente, mas no caso de um método, orequest
argumento é a instância em que está operando, não o primeiro argumento não-próprio.
Existe uma maneira de saber se o decorador está sendo aplicado a uma função em vez de um método e lidar de acordo?