UnboundLocalError with extra code after return

Duncan Booth duncan.booth at invalid.invalid
Wed Sep 30 03:20:25 EDT 2009


Rich Healey <healey.rich at gmail.com> wrote:
> It seems that my problem was that I can't assign a new function to the
> name func within the callonce() function. I can however interact with
> the func object (in this case storing information about whether or not
> I'd called it in it's __RECALL item.
>> Is there a cleaner solution?
>
You want to call something, and have that something remember state between 
each call? If it was me I'd define a class rather than a function.
>> class CallableOnlyOnce(object):
 def __init__(self, func):
 self.func = func
 def __call__(self):
 f = self.func
 if f:
 self.func = None
 return f()
 
>>> def callonce(func):
	return CallableOnlyOnce(func)
>>> @callonce
def t2():
 print "T2 called"
 
>>> t2()
T2 called
>>> t2()
>>>


More information about the Python-list mailing list

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