擅长:python、mysql、java
<p>我找到了更好的解决办法。在</p>
<pre><code>class call(object):
def __init__(self,begin, end, *args, **kwargs):
self.begin = begin
self.end = end
self.args = args
self.kwargs = kwargs
def __enter__(self):
self.begin(*self.args, **self.kwargs)
return self
def __exit__(self,exc_type,exc_val,trcback):
self.end(*self.args, **self.kwargs)
def lockFunc(*args):
print 'in lockFunc', args
print 'lock %s' %args
def unlockFunc(*args):
print 'in unlockFunc'
print 'unlock %s' %args
node = 'old-node'
with call(lockFunc, unlockFunc, node) as c:
print 'in with'
# update node value here
c.args = ('new-node',)
</code></pre>