Why does python not have a mechanism for data hiding?

Russ P. Russ.Paielli at gmail.com
Sun Jun 8 21:41:20 CEST 2008


On Jun 8, 5:40 am, Mark Wooding <m... at distorted.org.uk> wrote:
> Russ P. <Russ.Paie... at gmail.com> wrote:
> > The idea of being able to discern properties of an object by its name
> > alone is something that is not normally done in programming in
> > general.
>
> Really?  You obviously haven't noticed Prolog, Smalltalk, Haskell, ML,
> or Erlang then.  And that's just the ones I can think of off the top of
> my head.
>
>   * Prolog and Erlang distinguish atoms from variables by the case of
>     the first letter; also `_' is magical and is equivalent to a new
>     variable name every time you use it.
>
>   * Smalltalk distinguishes between global and local variables according
>     to the case of the first letter.
>
>   * Haskell distinguishes between normal functions and constructors
>     (both data constructors and type constructors) by the case of the
>     first letter, and has Prolog's `_' convention.
>
>   * ML allows a single-quote in variable names, but reserves names
>     beginning with a single-quote for type variables.  It also has
>     Prolog's `_' convention.
>
> As far as I can see, discerning properties of a thing from its name
> seems relatively common.

Well, "common" in Prolog, Smalltalk, Haskell, ML, and Erlang is hardly
common in general. I'll bet that Java and C/C++ are used more in North
Dakota than all those languages combined are used in the entire world.
That's not to say they aren't interesting academic languages, of
course.

As for using the case of the first letter to distinguish between local
and global variables, is that just a naming convention or is it
actually enforced by the compiler (or interpreter)? If it's actually
enforced, that seems rather restrictive to me. What if I want to name
a local variable after a proper name or an uppercase acronym? I guess
I'm just out of luck.



More information about the Python-list mailing list