class DecorateMe(object): def __init__(self, foo=None): self.foo = foo def __call__(self, func): def wrapper(decorated_self, *args): return func(decorated_self, self.foo, *args) return wrapper class Whatever(object): @DecorateMe(42) def b(self, *args): print self, args Whatever().b('a', 'b', 'c')