2024-04-24 01:07:14 发布
网友
我想实现类似于这种结构的东西:
class Outer: class A: foo = 1 class B: def __init__(self): self.bar = A.foo Outer.B().bar # ==> 1
但这失败了
NameError: name 'A' is not defined
我甚至不知道我为什么会理解asA(我认为)在范围内。你知道吗
A
你能帮我弄清楚为什么这不管用,以及我该怎么解决吗?你知道吗
如果您使用Outer.A.foo,它就会工作。你知道吗
Outer.A.foo
只在globals、locals和非局部单元格中查找名称(但这里没有闭包)。你知道吗
globals
locals
写Outer.A而不是A,或者考虑将Outer作为一个模块。你知道吗
Outer.A
Outer
就像你对Outer.B().bar做的一样:对self.bar=Outer.A().foo做同样的事情
Outer.B().bar
self.bar=Outer.A().foo
如果您使用
Outer.A.foo
,它就会工作。你知道吗只在
globals
、locals
和非局部单元格中查找名称(但这里没有闭包)。你知道吗写
Outer.A
而不是A
,或者考虑将Outer
作为一个模块。你知道吗就像你对
Outer.B().bar
做的一样:对self.bar=Outer.A().foo
做同样的事情相关问题 更多 >
编程相关推荐