mrstevegross <[EMAIL PROTECTED]> writes:

> I ran into a weird behavior with lexical scope in Python. I'm hoping
> someone on this forum can explain it to me.
>
> Here's the situation: I have an Outer class. In the Outer class, I
> define a nested class 'Inner' with a simple constructor. Outer's
> constructor creates an instance of Inner. The code looks like this:
>
> =========
> class Outer:
>   class Inner:
>     def __init__(self):
>       pass
>   def __init__ (self):
>     a = Inner()
> Outer()
> =========
>
> However, the above code doesn't work. The creation of Inner() fails.

This is because there isn't lexical scoping in class scopes.

Try replacing

    a = Inner()

with

    a = Outer.Inner()


Alternatively,

class Outer:
    class Inner:
        ...
    def __init__(self, Inner=Inner):
        a = Inner()

HTH

-- 
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to