Fredrik Lundh wrote: > André Roberge wrote: > > > >>This morning I had the following thought: >>I can, when I create a Jekyll object, update >>an outside_list. >>If, somehow, I could update that list when >>a Jekyll object disappears >>(perhaps by using __del__, which I have never touched) > > > Python makes no guarantees whatsover about when and how to > run __del__, so relying on it to remove user-visible resources is a > rather bad idea
[See idea at the very end about this.] > >>Any suggestions? > > why wouldn't > > def subplot(): > Evil = Jekyll() # Evil_twin gets created and displayed > Evil.doStuff() # Evil_twin does stuff on the screen > Evil.destroy() > > work for you? > > </F> Unfortunately, it wouldn't. It's difficult to explain in a few words why, but I'll try anyway! I'm developping a program (rur-ple) which is designed to help learning Python. In an earlier version (that didn't provide support for deriving classes from existing one) I had it working so that when "Evil" would get out of scope, Evil_twin would disappear from the screen. This came as an initial surprise for me, but a pleasant one. Better than having an example like: def boring(): x = 1 print x boring() print x # gives an error message. When I added the possibility of deriving classes, I had to change the connection between Jekyll and Hyde ... and, so far, lost that feature. If I need to have the user call Evil.destroy() as Evil is getting out of scope, it would miss the whole point of teaching about the natural way scope and namespace work. I guess I'll have to try and learn how to use __del__, and see if it can solve my problem. === A thought occurred to me, regarding "when" __del__ is called. Can I force Python, through some function call, to perform this. Each time I refresh the screen, I could force that call, then check to see if Evil has been destroyed by Python, which would give me the information I need to destroy Evil_twin behind the scene myself - which is what I am really after. -- http://mail.python.org/mailman/listinfo/python-list