[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

singleton ... again

On Wed, 12 Feb 2014 23:04:32 +1300, Gregory Ewing wrote:

> Roy Smith wrote:
>> It looks to me like he's trying to implement a classic Gang of Four
>> singleton pattern.
> Which I've never really seen the point of in Python, or any other
> language for that matter. Just create one instance of the class during
> initialisation, put it in a global somewhere, and use it thereafter.
> If you really want to make sure nobody creates another instance by
> accident, delete the class out of the namespace after instantiating it.

That does not work. It is trivial to get the type from an instance:

py> class Singleton:
...     pass
py> S = Singleton()
py> del Singleton
py> T = type(S)()
py> S
<__main__.Singleton object at 0xb71de9ec>
py> T
<__main__.Singleton object at 0xb71dea2c>

This is not aimed at the original poster, just a general observation. The 
Singleton design pattern is overused because it is probably the only 
design pattern that most programmers really understand.