Michele Simionato wrote:
> Roy Smith wrote:
> <snip>
> > That being said, you can indeed have private data in Python.  Just prefix
> > your variable names with two underscores (i.e. __foo), and they effectively
> > become private.  Yes, you can bypass this if you really want to, but then
> > again, you can bypass private in C++ too.
>
> Wrong, _foo is a *private* name (in the sense "don't touch me!"), __foo
> on the contrary is a *protected* name ("touch me, touch me, don't worry
> I am protected against inheritance!").
> This is a common misconception, I made the error myself in the past.

Sure, if you only consider "private" and "protected" as they're defined
in a dictionary.  But then you'd be ignoring the meanings of the
public/private/protected keywords in virtually every language that has
them.  http://www.google.com/search?q=public+private+protected

Python doesn't have these keywords, but most Python programmers are at
least somewhat familiar with a language that does use them.  For the
sake of clarity:
  __foo ~= private = used internally by base class only
  _foo ~= protected = used internally by base and derived classes

The Python docs use the above definitions.

--Ben

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

Reply via email to