> class RunOnce:
>
> def run(self):
> self.run = _noMoreRunning
> # do other stuff that you only want to happen once
>
> def _noMoreRunning(self):
> raise Exception("Can only call run() once.")
>
Yeah, this is clever, I like it. You slam the door from the inside,
interpose a "door closed" next time run() is called -- likely in error.
A mutable runtime strategy might be to force oneself to create and run all
the instances needed, then shut 'em all down at the class level:
class Runner (object):
def run(self):
print "Yo!"
>>> obja = Runner()
>>> objb = Runner()
>>> obja.run()
Yo!
>>> def newrun(self): raise Exception("Sorry, too late")
>>> Runner.run = newrun
>>> objb.run()
Traceback (most recent call last):
File "<pyshell#60>", line 1, in -toplevel-
objb.run()
File "<pyshell#58>", line 1, in newrun
def newrun(self): raise Exception("Sorry, too late")
Exception: Sorry, too late
Kirby
_______________________________________________
Edu-sig mailing list
[email protected]
http://mail.python.org/mailman/listinfo/edu-sig