Two attributes! Why?
Steven D'Aprano
steve at REMOVE-THIS-cybersource.com.au
Mon Dec 1 18:04:45 EST 2008
On Mon, 01 Dec 2008 07:43:44 -0800, Emanuele D'Arrigo wrote:
> On Nov 29, 5:21 am, Steven D'Aprano <st... at REMOVE-THIS-
> cybersource.com.au> wrote:
>> This is a side-effect of name-mangling. Double-underscore names are
>> only mangled when they are referred to directly as attributes, not when
>> they are passed to setattr, getattr etc. Those functions don't do any
>> name mangling.
>
> Ah! That make sense! Thank you!
>
> It's a bit of an obscure thing right now. I don't see mention of it in
> the description of the setattr/getattr built-ins:
>
> http://docs.python.org/library/functions.html
>
> Wouldn't be good to have a hint of the issue there?
Not really.
You seem to assume that name mangling always happens unless the docs say
it doesn't. That's backwards. Name mangling *never* happens except where
the docs say it does.
Hence I can tell you that self.__dict__['__name'] will fail to find a
name-mangled attribute self.__name without even trying it, because I know
dictionary lookups don't do name-mangling either.
--
Steven
More information about the Python-list
mailing list