Я пытаюсь создать декоратор, который можно использовать с обеими функциями и методами в python. Это на самом деле не так сложно, но при создании декоратора, который принимает аргументы, это похоже.
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)
Вышеприведенный код корректно завершает функцию/метод, но в случае метода аргумент request
является экземпляром, на котором он работает, а не первым несамостоятельным аргументом.
Есть ли способ сказать, применяется ли декоратор к функции вместо метода и обрабатывается соответственно?