为了在我的代码中获得某种顺序,我将一个类放在另一个类中,内部类根本不需要外部类(至少我之前是这么想的)。
作为代码的行为:
class A:
def __init__(self):
self.a=10
def do(self):
print(self.a)
return A()
a=A()
print(a.do())
#this runs as expected with the output:
#10
#<__main__.A object at 0x01234567>
#cleaning up
del A
class B:
#same code for class A
class A:
def __init__(self):
self.a=10
def do(self):
print(self.a)
return A()
a=B.A()
print(a.do())
#This raises for the line 'return A()' a NameError: global name 'A' is not defined
我不明白为什么在这种情况下不能从其内部访问 A 。
这是另一件类似且运行良好的事情:
def f():
a=10
class C:
def __init__(self):
pass
def do(self):
print(a)
return C()
return C().do()
print(f())
附加问题:为什么在这种情况下类的行为与功能不同,我们从中得到什么好处?