[Python-Dev] Deprecate __ private (was Re: PEP 8 updates/clarifications) (original) (raw)

Jim Fulton jim at zope.com
Tue Dec 13 12:45:42 CET 2005


Guido van Rossum wrote:

On 12/12/05, Jim Fulton <jim at zope.com> wrote:

In practice, I don't agree that it works fine. Inevitably, someone finds a need to access a "private" variable in a subclass. Or even in the original class, you find some need to use something like getattr where the implicit name mangling doesn't come into play and you have to emulate the name mangling. Or perhaps someone wants to examine the value of one of these variables in the debugger. _In my experience, almost every time someone uses the private trick, they or someone else comes to regret it.

OTOH, explicit name mangling provides the benefits of implicit name mangling without it's drawbacks. _I half agree. I've seen many classes overuse private.

As I point out above, it's not just a matter of overuse. It is only recognized by the compiler, so it doesn't work with getattr. And of couuse, there's the debugger issue. I've often found cases where, even when I was using it correctly, I had to do manual name mangling myself. Anytime one has to perform weird tricks in Python to work around magic should be a warning sign.

But that's a separate issue from not having the feature at all; you might as well argue against private in Java or C++.

I'm not arguing against the feature but against it's implementation.

My intuition is that the explicit name magling approach is more in keeping with Python's way of doing things.

Jim

-- Jim Fulton mailto:jim at zope.com Python Powered! CTO (540) 361-1714 http://www.python.org Zope Corporation http://www.zope.com http://www.zope.org



More information about the Python-Dev mailing list