On 17/01/13 11:34, iMath wrote:
To make a method or attribute private (inaccessible from the outside),
simply start its name with two underscores

----《Beginning Python From Novice to Professional》

but there is another saying goes:
Beginning a variable name with a single underscore indicates that the
variable should be treated as ‘private’.

I test both these 2 rules ,it seems only names that start with two
underscores are REAL private methods or attributes .

Python does not have a REAL private methods/attributes. The double leading underscore is meant to trigger name mangling to avoid naming collisions with subclasses, the method/attribute is still accessible using the mangled name:

>>> ap._A__a
'__a'

You generally only use double leading underscores when your private method/attribute is in a very high risk of having naming clashes with superclasses/subclasses.

> so what is your opinion about single leading underscore and private
> methods or attributes?

We're all consenting adults. Use methods/attributes with single or double leading underscore at your own risk.

Most programming languages do not actually have a private attribute that is totally inaccessible from outside, there are usually ways work around access restrictions, usually using reflections or pointers. Python only makes it easy to do so by making private variables only a convention.

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to