classes

Michele Simionato mis6 at pitt.edu
Wed Jul 23 23:11:47 CEST 2003


Steven Taschuk <staschuk at telusplanet.net> wrote in message news:<mailman.1058833821.16631.python-list at python.org>...
> Quoth Michele Simionato:
> > Steven Taschuk <staschuk at telusplanet.net> wrote in message news:<mailman.1058723911.12956.python-list at python.org>...
>  [...]
> > >     _the_instance = None
> > >     class MySingleton(object):
> > >         def __new__(self):
> > >             global _the_instance
> > >             if _the_instance is None:
> > >                 _the_instance = object.__new__(self)
> > >             return _the_instance
> > 
> > Why are you using a global here and not [a class attribute]
> 
> The memory of that thread a little while back about using __del__
> with singletons.  If the instance is referenced by a class
> attribute, the cyclic reference prevents the __del__ from being
> used.  If the cycle goes through a module attribute, though, the
> zapping of module dicts during shutdown breaks the cycle and lets
> the __del__ run.  (Whether all this is true depends on the version
> of Python, I think, but I don't know the details.)
> 
> This might be relevant to the OP, whose example was a singleton
> representing the single database connection used by an entire
> application -- in such a case, __del__ would be a natural place to
> make sure the connection is closed properly.
> 
> I should have explained this bit of trickery.  :(
> 
Thanks for the explation, I missed that thread.

                       Michele




More information about the Python-list mailing list