嵌套类本身没有定义

时间:2013-08-20 17:59:43

标签: python-2.7 nested-class

以下代码成功打印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()

为什么?

1 个答案:

答案 0 :(得分:2)

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 Scopes and Namespaces上的文档。