以下代码成功打印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()
为什么?
答案 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上的文档。