class Dec: def __init__(self, func): self.func = func # self.__call__ = wraps(self.func)(self.__call__) def __call__(self, *args, **kwargs): return self.func(*args, **kwargs) @Dec def func(arg, kwarg=1): print('func. arg =', arg, 'kwarg =', kwarg) return class Test: def __init__(self): self.attr = 1 @Dec def func(self, arg, kwarg=1): print('Test.func. arg =', arg, 'kwarg =', kwarg, 'self.attr = ', self.attr) return func(1) func(1, 3) obj = Test obj.func(1) obj.func(1, 3)
теряется аргумент self.
В то же время, если передавать self вместе с прилетающими аргументами, я передаю не self декорируемого метода, а self декоратора. Так куда пропадает self от декорруемого метода?

