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?