S
Shane Hathaway
John said: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.
I'm not sure what you're saying. The class of a class is the 'type'
builtin, unless metaclasses are involved. So your expression
"dir(Foo.__class__)" is equivalent to "dir(type)", and the 'type'
builtin happens to have a __name__ attribute that dir() notices. Take a
look:
.... pass
....'type'
The bug is that the expression "dir(someclass)", where the class is a
user-defined class of either new or old style, never reveals to the user
that the class object has a __name__ attribute. I tested this with
Python versions 2.3 through 2.5b1. This is an education issue; since
that important attribute is not in the list, newcomers are not likely to
discover it, and may instead use strange incantations to get the name of
a class.
Do you want me to file the bug?
Shane