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