Arnaud Delobelle wrote: > Don't see it as the first name a class is bound to, but rather as > the name a class is defined as. > If class_object.__name__ == 'Foo' it means that somewhere in your > code there is a class definition: > > class Foo: > # stuff > > Same for function: if function_object.__name__ == 'bar' it means > that somewhere you have > > def bar(...): > # stuff > > (Of course this is not the case if you use another way to define > functions or classes, e.g. type() )
This is somehow contrary to my understanding of the Python names concept. What if I use a loop to define several classes based on data -- they'll all have the same __name__ unless I change it manually. Having this __name__ attribute set seems to me like "magic behind the lines" which Python strives to evade, doesn't it? Personally, I'd prefer inserting a mechanism for this manually if and when I really need the functionality, but see below. > What I described above is quite useful I think. The alternative > (anonymous classes) is that given an object myobj you have no > means to find out what its class is (by that I mean to be able to > locate the class definition in your source code), apart from > stabbing in the dark (i.e. trying type(myobj)==someclass until > successful). In the typical case where you have one name per class definition, yes. Perhaps I'm lacking a typical application of __name__; that must be why I'm so stubborn here ;) Regards, Björn -- BOFH excuse #419: Repeated reboots of the system failed to solve problem -- http://mail.python.org/mailman/listinfo/python-list