擅长:python、mysql、java
<pre><code>__author__ = 'Jakob'
class OptionalDecoratorDecorator(object):
def __init__(self, decorator):
self.deco = decorator
def __call__(self, func):
self.deco = self.deco(func)
self.func = func
def wrapped(*args, **kwargs):
if kwargs.get("no_deco") is True:
return self.func()
else:
return self.deco()
return wrapped
def spammer(func):
def wrapped():
print "spam"
return func()
return wrapped
@OptionalDecoratorDecorator(spammer)
def test():
print "foo"
test()
print "***"
test(no_deco=True)
</code></pre>