Shane Hathaway wrote: > Don't forget to file a bug.
I'm reluctant to call it a bug just yet. Here's more stuff below. There's obviously a difference between old- and new-style classes. It seems that as far as new-style is concerned, __name__ is an attribute of __class__ (along with a bunch of other stuff), but not of Foo itself. >>> class Foo(object): pass >>> dir(Foo) ['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', '__weakref__'] >>> dir(Foo.__class__) ['__base__', '__bases__', '__basicsize__', '__call__', '__class__', '__cmp__', '__delattr__', '__dict__', '__dictoffset__', '__doc__', '__flags__', '__getattribute__', '__hash__', '__init__', '__itemsize__', '__module__', '__mro__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', '__subclasses__', '__weakrefoffset__', 'mro'] >>> class Foo: pass >>> dir(Foo) ['__doc__', '__module__'] >>> dir(Foo.__class__) Traceback (most recent call last): File "<pyshell#9>", line 1, in -toplevel- dir(Foo.__class__) AttributeError: class Foo has no attribute '__class__' -- http://mail.python.org/mailman/listinfo/python-list