Decorators without function

Peter Otten __peter__ at web.de
Mon Aug 9 07:37:14 EDT 2010


Vedran wrote:

> Hello!
> 
> Is it possible to apply a decorator on a block of code, without defining
> a function that decorator is applied to.

You can only decorate functions or classes.
 
> I have to generate a lot of similar graphs. For that reason I use
> plot_decorator to perform usual figure setup(outfile, legend, x_label,
> y_label and so on), and pylab.plot commands to do the actual plotting.
> 
> Current solution:
> 
> @plot_decorator(fig_params1)
> def plt():
> pylab.plot(..first graph data...)
> pylab.plot(..second graph data..)
> plt()
> 
> Is it possible to apply decorator only to the body of plt (several
> pylab.plot commands) without actually defining this function, because I
> use it only once, right after the definition?

I have a hunch that a contextmanager is a better match for your 
requirements, see

http://docs.python.org/library/contextlib.html#contextlib.contextmanager

Peter



More information about the Python-list mailing list