>> While this is surely true, would somebody explain why I had such trouble >> finding this? > > I think __name__ is an attribute of the class itself, not the instance:
That makes sense, but what doesn't make sense is why, when you do a dir(Foo), you don't get '__name__' in the returned list of available things Python knows about a Foo. >>> class Foo(object): ... pass ... >>> myClass = Foo >>> myInstance = Foo() >>> # does myClass have a '__name__' attribute? >>> '__name__' in dir(myClass) False >>> # that's a negative, buster >>> '__name__' in dir(myInstance) False >>> # haha, just kidding, it really did have a __name__ >>> # proof that dir() isn't showing everything: >>> myClass.__name__ 'Foo' >>> myInstance.__name__ Traceback (most recent call last): File "<stdin>", line 1, in ? AttributeError: 'Foo' object has no attribute '__name__' It's the >>> '__name__' in dir(myClass) False >>> myClass.__name__ 'Foo' that throws me. What other super-secret tricks have I missed because dir() didn't tell me about them? -a still-confused tkc -- http://mail.python.org/mailman/listinfo/python-list