Why nested scope rules do not apply to inner Class?

Salim Fadhley salimfadhley at gmail.com
Tue Aug 12 13:12:27 CEST 2008

> I'm wondering as well if the new nonlocal statement will fix that in py3k?

The "class C3" statement is executing before the "class B" statement
has concluded, so at that time B does not exist in any scope at all,
not even globals(). You could reference B.C1 inside a method because a
method is executed AFTER the class is defined.
class A(object):

class B(object):

        class C1(object):

        class C2(C1):
                foo = A

        class C3(object):

            def test(  ):
                print repr( B.C1 )
                print repr( B.C2 )



More information about the Python-list mailing list