此代码在python中有效:
class Inner:
class InnerInner:
attr = 1
class Inner2(Inner):
class InnerInner2(Inner.InnerInner):
attr = 2
为什么在python中无法执行以下操作?
class Outer:
class Inner:
class InnerInner:
attr = 1
class Inner2(Inner):
class InnerInner2(Inner.InnerInner):
attr = 2
它给我以下错误:
class InnerInner2(Inner.InnerInner):NameError:未定义名称“内部”
我希望Inner
在开始定义Inner2
之前会完全定义。
class Foo:
a = 1
def bar(self):
return a
Foo().bar()
就像bar
内部的代码看不到Foo
范围内的任何东西,Inner2
内部的代码看不到Outer
范围内的任何东西。
Inner
是完全由您尝试使用它的点定义,但是它在您无法访问的范围内。