On 2010-04-05 10:08:51 -0700, John Nagle said:
Yes. Functions with persistent state are generally a bad idea.Unfortunately, the "signal" module requires a callback parameter which is a plain function. So you have to send it a function, closure, or lambda. Here, it's being sent a closure - "handler" bound to the state that existed when "signal.signal" was called.
Uhh, what?
class A:
... def handle(self, foo, bar): ... print "Okay" ...
a = A() signal.signal(signal.SIGALRM, a.handle)
0
Okay
Where after that call to signal.signal, I did kill -ALRM and such in another process.
When Python says 'a function', it doesn't mean a -plain- function. A method's a function too. Arguably, really, any callable is almost always (as in I can't think of anywhere it doesn't) sufficient to be Functiony enough to work.
-- --S ... p.s: change the ".invalid" to ".com" in email address to reply privately. -- http://mail.python.org/mailman/listinfo/python-list
