这似乎是一个非常奇怪的范围问题:
首先,我将展示有效的方法:
class A():
x = 1
y = x
class B():
x = {'a' : 1, 'b' : 2}
y = {z : 1 for z in x}
不起作用:
class C():
x = {'a' : 1, 'b' : 2}
y = {z : max(x) for z in x} # max could be replaced with any function
导致:
NameError: name 'x' is not defined
我知道它指的是"内部" (值)在字典理解中。
这可能意味着在列表理解中以某种方式,类范围不可用。
为什么我们如何解决这个问题(不使用它作为实例变量,即使用__init __)?