[issue44244] protected members accessible in other modules

Nihar Ranjan Roy report at bugs.python.org
Thu May 27 02:33:17 EDT 2021


Nihar Ranjan Roy <niharranjanroy at gmail.com> added the comment:

Thank you dennis. This is helpful.

With Regards
Nihar Ranjan Roy
Mobile: +91 9810 977 908
___________________

On Thu, May 27, 2021 at 10:47 AM Dennis Sweeney <report at bugs.python.org>
wrote:

>
> Dennis Sweeney <sweeney.dennis650 at gmail.com> added the comment:
>
> An attribute name starting with a single underscore is just a warning to
> users of your code that "this attribute is supposed to be private, access
> it at your own risk."
>
> Everything below is from
> https://docs.python.org/3/tutorial/classes.html?highlight=mangle#private-variables
> :
>
> “Private” instance variables that cannot be accessed except from inside an
> object don’t exist in Python. However, there is a convention that is
> followed by most Python code: a name prefixed with an underscore (e.g.
> _spam) should be treated as a non-public part of the API (whether it is a
> function, a method or a data member). It should be considered an
> implementation detail and subject to change without notice.
>
> Since there is a valid use-case for class-private members (namely to avoid
> name clashes of names with names defined by subclasses), there is limited
> support for such a mechanism, called name mangling. Any identifier of the
> form __spam (at least two leading underscores, at most one trailing
> underscore) is textually replaced with _classname__spam, where classname is
> the current class name with leading underscore(s) stripped. This mangling
> is done without regard to the syntactic position of the identifier, as long
> as it occurs within the definition of a class.
>
> Name mangling is helpful for letting subclasses override methods without
> breaking intraclass method calls. For example:
>
> ...
>
> ----------
>
> _______________________________________
> Python tracker <report at bugs.python.org>
> <https://bugs.python.org/issue44244>
> _______________________________________
>

----------

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue44244>
_______________________________________


More information about the Python-bugs-list mailing list