On Wed, 05 Mar 2008 21:05:31 -0500, Terry Reedy wrote:

> If I understand your question, classes are not singletons:
>>>> ll=[]
>>>> for i in range(2):
>  import string
>  ll[i]=string

Where's the IndexError? :-)

>>>> ll[0] is ll[1]
> True

But yes, modules are singletons in that way, at least if you go through 
the import mechanism. 


>>>> for i in range(2):
>  class C: pass
>  ll[i] = C
> 
> 
>>>> ll[0] is ll[1]
> False


Ah, but each time around the loop you create a *new class* that just 
happens to be called C. An alternative way to see similar behaviour is:


def foo(x=None):
    class C(object):
        X = x
    return C

Naturally foo() is foo() gives False -- although both classes are called 
C, they are different classes that just happen to have the same state.


I accept my question about classes being singletons is not well-formed, 
not even in my own mind. I guess one way of asking is, for any two class 
objects (not instances) C1 and C2, does "C1 == C2" imply "C1 is C2"?




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

Reply via email to