Variable scope in classes

Larry Bates lbates at swamisoft.com
Thu Mar 25 17:03:49 EST 2004


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__?

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()

returns the following traceback:

Traceback (most recent call last):
  File
"C:\Python22\Lib\site-packages\Pythonwin\pywin\framework\scriptutils.py",
line 301, in RunScript
    exec codeObject in __main__.__dict__
  File "F:\SYSCON\SMARTROUTE\classjunk.py", line 13, in ?
    x=bar()
  File "F:\SYSCON\SMARTROUTE\classjunk.py", line 10, in __init__
    foo.__init__()
  File "F:\SYSCON\SMARTROUTE\classjunk.py", line 3, in __init__
    print self.__something
AttributeError: bar instance has no attribute '_foo__something'

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

Regards,
Larry Bates
Syscon





More information about the Python-list mailing list