singleton ... again

Ned Batchelder ned at nedbatchelder.com
Thu Feb 13 06:50:36 EST 2014


On 2/13/14 4:00 AM, Piet van Oostrum wrote:
> Ben Finney <ben+python at benfinney.id.au> writes:
>
>> Gregory Ewing <greg.ewing at canterbury.ac.nz> writes:
>>
>>> 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.
>>
>> Make that “somewhere” a module namespace, and you effectively have a
>> Singleton for all practical purposes. So yes, I see the point of it; but
>> we already have it built in :-)
>
> There is a use case for a singleton class: when creating the singleton
> object takes considerable resources and you don't need it always in your
> program.
>

I still don't see it.  To convince me that a singleton class makes 
sense, you'd have to explain why by virtue of the class's very nature, 
it never makes sense for there ever to be more than one of them.

Your example is an expensive-to-create object.  Why does that mean I 
might not want two of them?  I can see how it makes sense to have a 
factory function, which will make one only when asked, and will hold 
onto that object for the next time it's needed.

But that's different than a class which pretends to make instances but 
actually always returns the same instance.

-- 
Ned Batchelder, http://nedbatchelder.com




More information about the Python-list mailing list