Conditional decoration

Emile van Sebille emile at fenx.com
Mon Jun 18 18:49:24 EDT 2012


On 6/18/2012 3:16 PM Roy Smith said...
> Is there any way to conditionally apply a decorator to a function?
> For example, in django, I want to be able to control, via a run-time
> config flag, if a view gets decorated with @login_required().
>> @login_required()
> def my_view(request):
> pass

class myDecorator(object):
 def __init__(self, f):
 self.f = f
 def __call__(self):
 print "Entering", self.f.__name__
 self.f()
 print "Exited", self.f.__name__
def null(a): return a
#if condition:
myDecorator = null
@myDecorator
def aFunction():
 print "aFunction running"
aFunction()
Cobbled together from http://www.chrisevans3d.com/pub_blog/?p=530 and 
http://stackoverflow.com/questions/3687046/python-sphinx-autodoc-and-decorated-members
HTH
Emile


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /