On Fri, 26 Sep 2008 22:15:43 -0700, Aahz wrote:

> In article <[EMAIL PROTECTED]>,
> Steven D'Aprano  <[EMAIL PROTECTED]> wrote:
>>On Thu, 25 Sep 2008 21:17:14 -0700, Aahz wrote:
>>>
>>> Seems to me that if all the module is used for is to store state,
>>> you're wasting a file on disk.  I personally prefer to use a class
>>> singleton.
>>
>>I don't recognise the term "class singleton". Can you explain please?
>>How is it different from an ordinary singleton?
> 
> An ordinary singleton is instantiating the class multiple times yet
> returning the same instance object; a class singleton is simply using
> the class directly (like a module).

Amazing. That's *exactly* what I was thinking of when I first asked my 
question.

Since I now no longer think I need such a beast, this is just academic 
curiosity, but given a class singleton, I'd like to be able to call it as 
if it were a function. Normally calling a class object returns an 
instance -- I wish to return something else. Is that just a matter of 
overriding __new__?

This seems to works:

>>> class ClassSingleton(object):
...     thing = (0, 1, 2)
...     def __new__(cls, *args):
...             return len(args+cls.thing)
...
>>> ClassSingleton(1, 2, 4, 8, 16)
8



Is it really that easy?



-- 
Steven
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to