On Jan 23, 8:57 am, Dennis Lee Bieber <wlfr...@ix.netcom.com> wrote: > On Fri, 23 Jan 2009 01:48:32 -0800 (PST), TheFlyingDutchman > <zzbba...@aol.com> declaimed the following in comp.lang.python: > > > abstraction. In Python, all class attributes are public but names may > > be "mangled" to discourage unauthorized access, but otherwise not > > prevented. It is up to the designer to provide the appropriate > > interfaces to the data so that the client programmer does not have to > > resort to manipulating the encapsulated data attributes." > > Double underscore "mangling" was not implemented to "discourage > unauthorized access". Its primary purpose is to prevent name space > conflicts when an extended subclass and its parent class use the same > name for an attribute, but that attribute is not of the same "meaning". > Using the __ prefix means BOTH attributes are part of the instance, but > the subclass only see's its variant and should make calls into > superclass methods to modify the parent variant. > > Python convention is that a single underscore -- which does NOT > perform name mangling -- is the indicator meant to "discourage > unauthorized access". >
Is there a significant performance hit with using the double underscore for signifying a variable you want to be private? It seems like it is advantageous that someone trying for direct access has to use a different notation, which will help to emphasize that it shouldn't be access directly. -- http://mail.python.org/mailman/listinfo/python-list