In <[EMAIL PROTECTED]>, Bjoern Schliessmann wrote:

> Michele Simionato wrote:
>> On Mar 1, 9:40 am, Marc 'BlackJack' Rintsch <[EMAIL PROTECTED]>
>>> In <[EMAIL PROTECTED]>, Bjoern Schliessmann
> 
>>>> But what's it (__name__) good for?
>>>
>>> As objects don't know to which name they are bound, that's a good
>>> way to give some information in stack traces or when doing
>>> introspection.
>> 
>> Also, the name is used by pickle to find the class of pickled
>> instances.
> 
> Mh. I suspect there's also more to it than I see now, but this
> __name__ seems quite useless to me. What if I rebind the class'
> name after definition?

Then it's a way to still get the name of the definition via `__name__`. 
Together with the name of the module where the definition took place which
is also available as attribute on the objects it is very useful to find
out where to look for the source code.  Just see the default `repr()` of
class objects.

> Or is it really just for some manual introspection? If it is, it seems a
> bit of an overkill to me.
>
>>>> class Spam(object):
> ...     pass
> ...
>>>> Ham = Spam
>>>> Spam = 0
>>>> test = Ham()
>>>> test.__class__
> <class '__main__.Spam'>

What would you expect this to look like if there weren't a __name__
attribute?

Ciao,
        Marc 'BlackJack' Rintsch
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to