gpt4 book ai didi

python - 为什么这个闭包在Python中是不可能的?

转载 作者:行者123 更新时间:2023-11-30 23:32:47 24 4
gpt4 key购买 nike

在Python中,我可以从内部函数访问外部函数中的变量,因此它形成了一个闭包。但是,我无法像这样从内部类访问外部类中的变量,

>>> class A:
... a=1
... class B:
... b=1
... def pr(self):
... print a,b
...
>>> c=A().B()
>>> c.pr()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 6, in pr
NameError: global name 'a' is not defined

为什么这种闭包在Python中不可能?

最佳答案

docs say :

The scope of names defined in a class block is limited to the class block; it does not extend to the code blocks of methods

类 block 的范围也不会扩展到嵌套类语句的代码块。

<小时/>

(对我来说)不清楚你想要做什么,但这是一个更典型的模式,它使 B 成为 A 的子类,从而允许实例B 访问 BA 的属性:

class A:
a=1

class B(A):
b=1
def pr(self):
print self.a, self.b

c = B()
c.pr()

打印

1 1

关于python - 为什么这个闭包在Python中是不可能的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19223964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com