variable scope

Ethan Furman ethan at stoneleaf.us
Sat Sep 26 00:14:12 CEST 2009


Joel Juvenal Rivera Rivera wrote:
> Hi i was playing around with my code the i realize of this
> 
> ###################
> _uno__a = 1
> class uno():
>     __a = 2
>     def __init__(self):
>         print __a
> uno()
> ###################
> and prints 1
> 
> So when i create class uno in the __init__ calls the global _uno__a when
> i refer just __a ? it's some kind of "private global" variable?
> 
> Regards
> 
> Joel Rivera
> 


Wow, that's interesting.  Looks like you have simultaneously kicked in 
name mangling[1], while not using the 'self' notation to specify an 
instance variable and not a global variable.

For an instance variable you should use self.__a, not just __a.  And you 
don't want to use two leading underscores until you know what you're 
doing.  :-)

[1] http://www.python.org/doc/1.5/tut/node67.html
     http://docs.python.org/reference/expressions.html
          in 5.2.1 Identifiers


Hope this helps!

~Ethan~



More information about the Python-list mailing list