I am trying to define a python decorator (my_decorator) for a class method (f), shown below in a simplified scenario. my_decorator is parametrized by param, which depends on the class attribute (in this case level). 
class my_decorator:
    def __init__(self, param):
        self.param = param
    def __call__(self, f):
        def f_decorated(instance, c):
            print("decorated with param = %d" % self.param)
            return f(c)
        return f_decorated
class A:
    def __init__(self, level):
        self.level = level
    @my_decorator(param=self.level)   # Here is the problematic line!
    def f(x):
        return x
if __name__ == "__main__":
    a = A(level=2)
    a.f(1)   # name "self" is not defined 
The above code does not work, and I get a "self" is not defined error. So my question is, is there any way to achieve the goal of context-parametrized decorator?
BTW, the use case is: I am trying to achieve persistent memoization technique (described at
memoize to disk - python - persistent memoization)
The file where the cache persists to depends on the class A, specifically 'level'. For instance, I would like to persist to the file cache_%d.txt % self.level .
 
     
     
     
    