5

以下代码成功打印OK

class B(object):
        def __init__(self):
            super(B, self).__init__()
            print 'OK'

class A(object):
    def __init__(self):
       self.B()

    B = B

A()

但以下应该与上述相同的工作NameError: global name 'B' is not defined

class A(object):
    def __init__(self):
       self.B()

    class B(object):
        def __init__(self):
            super(B, self).__init__()
            print 'OK'
A()

为什么?

4

1 回答 1

4

B在类的范围内可用A- 使用A.B

class A(object):
    def __init__(self):
       self.B()

    class B(object):
        def __init__(self):
            super(A.B, self).__init__()
            print 'OK'

A()

请参阅有关Python 范围和命名空间的文档。

于 2013-08-20T18:02:08.940 回答