Variable scope in classes

Glenn Andreas gandreas at no.reply
Thu Mar 25 23:54:16 CET 2004


In article <P6OdnbAHb-yjyv7dRVn-uA at comcast.com>,
 "Larry Bates" <lbates at swamisoft.com> 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__?
> 

Because __something is "private" to bar, and thus not visible anywhere 
else (unless you manually tweak on the "_foo", which is tricky and 
really not very nice).

> Example:
> 
> 
> class foo:
>     def __init__(self):
>         print self.__something
> 
> 
> class bar(foo):
>     __something="This is a test"
> 
>     def __init__(self):
>         foo.__init__(self)
> 
> 
> x=bar()

If you get rid of the private underscore:

class foo:
    def __init__(self):
        print self.something


class bar(foo):
    something="This is a test"

    def __init__(self):
        foo.__init__(self)


x = bar()

it works fine.



More information about the Python-list mailing list