擅长:python、mysql、java
<p>如果你想在decorator中保持state,你应该使用一个类。</p>
<p>例如,这不起作用</p>
<pre><code>def mydecorator(f):
x = 0
def decorator():
x += 1 # x is a nonlocal name and cant be modified
return f(x)
return decorator
</code></pre>
<p>有很多解决方法,但最简单的方法是使用类</p>
<pre><code>class mydecorator(object):
def __init__(self, f):
self.f = f
self.x = 0
def __call__(self, *k, **kw):
self.x += 1
return f(self.x)
</code></pre>