私のコードでいくつかの順序を得るために、あるクラスを別のクラスに入れました。内部クラスは外部クラスをまったく必要としません(少なくともそれは私が以前に考えていたことでした)。
コードとしての動作:
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())
追加の質問: この場合、クラスの動作が機能と異なるのはなぜですか。これから得られる利点は何ですか?