Variable scope in classes

David MacQuigg dmq at
Fri Mar 26 01:19:07 CET 2004

On Thu, 25 Mar 2004 16:03:49 -0600, "Larry Bates"
<lbates at> wrote:

>I'm confused about variable scope in a class
>that is derived from a base class framework.
>Can someone enlighten me on why bar.__init__
>method can't see self.__something variable
>in the foo.__init__?
>class foo:
>    def __init__(self):
>        print self.__something
>class bar(foo):
>    __something="This is a test"
>    def __init__(self):
>        foo.__init__(self)
>returns the following traceback:

So why did you put __ in front of 'something' if you were not
intending this to be a "private" variable?

>Traceback (most recent call last):
>  File
>line 301, in RunScript
>    exec codeObject in __main__.__dict__
>  File "F:\SYSCON\SMARTROUTE\", line 13, in ?
>    x=bar()
>  File "F:\SYSCON\SMARTROUTE\", line 10, in __init__
>    foo.__init__()
>  File "F:\SYSCON\SMARTROUTE\", line 3, in __init__
>    print self.__something
>AttributeError: bar instance has no attribute '_foo__something'

Python makes the the variable "private" by prepending _foo to whatever
you name with two leading underscores.

-- Dave

>Is there some "other" way to do this without passing information
>through foo.__init__ argument list?
>Larry Bates

More information about the Python-list mailing list