making a variable available in a function from decorator
Bruno Desthuilliers
bdesth.quelquechose at free.quelquepart.fr
Wed Jul 25 15:40:37 EDT 2007
Evan Klitzke a écrit :
> On 7/30/07, rkmr.em at gmail.com <rkmr.em at gmail.com> wrote:
>
>>is it possible to do this without passing it as a function argument?
>>
> Sort of. Functions are objects in python, so you can set attribute on them. E.g.
>
> def foo():
> return foo.c
>
> foo.c = 1
> print foo()
>>> def foo():
... print foo.c
...
>>> foo.c = 1
>>> bar = foo
>>> del foo
>>> bar()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<stdin>", line 2, in foo
NameError: global name 'foo' is not defined
>>>
> Which will print 1. Of course, it would generally be better to write
> your own class for this sort of thing, so that you can set the
> variable in the instance scope.
Indeed. But even with OO, explicit is better than implicit.
More information about the Python-list
mailing list