Name mangling
ullrich at math.okstate.edu
ullrich at math.okstate.edu
Tue May 9 12:39:46 EDT 2000
In article <jJWR4.3404$wYl.205175296 at newsb.telia.net>,
"Fredrik Lundh" <effbot at telia.com> wrote:
> ullrich at math.okstate.edu wrote:
> > [...] I don't get it at all...
>
> oh, I forgot to include the important part: the paragraph
> I quoted ends with this sentence:
>
> "Outside classes, or when the class name consists
> of only underscores, no mangling occurs."
>
> in other words, this works:
>
> _C__foo = 42
>
> class C:
> def __init__(self):
> self.value = __foo
>
> c = C()
>
> </F>
That was quick - I just came back to say oh I think
I got it and you already replied.
What I was missing (I think) was the significance
of the words "textually replaced". In fact(??) the text
_defining_ C is changed to
class C:
def __init__(self):
self.value = _C__foo
before anything else happens(???) This is not what I
thought it all meant, although it has the same effect
as what I thought happened in case the identifier is an
attribute of the class - it also makes it clear why the
original snippet gives that error and the modified one
doesn't, so this must be it. Aha, thanks.
I can easily imagine why having
self.__value = 42
changed automatically to
self._C__value = 42
could be useful, but I don't see the point to changing
self.value = __foo
to
self.value = _C__foo
this way (this is as much a pathetic excuse
for not realizing what was going on as a
request for an explanstion, although if you
have an example handy that would be fine.)
Thanks,
DU
Sent via Deja.com http://www.deja.com/
Before you buy.
More information about the Python-list
mailing list