为什么不能以这种方式使用类attr
class A:
a = 1
d = [1, 2, 3, 4]
e = [i for i in d if i == a]
print(e)
错误信息如下:
Traceback (most recent call last):
File "/home/gavinc/code/eigen_clients/gavinc/a002.py", line 3, in <module>
class A:
File "/home/gavinc/code/eigen_clients/gavinc/a002.py", line 7, in A
e = [i for i in d if i == a]
File "/home/gavinc/code/eigen_clients/gavinc/a002.py", line 7, in <listcomp>
e = [i for i in d if i == a]
NameError: name 'a' is not defined
如果我在类的外部编写此代码,则不会出现错误,类似于以下代码:
a1 = 1
d1 = [1, 2, 3, 4]
e1 = [i for i in d1 if i == a1]
print(e1)
对于类,实例变量在
init
方法中定义如下:如果您直接在类中定义变量,它们将是类变量。它们既可以通过类实例(通常与实例变量类似)访问,也可以直接从类名访问(在本例中,类似于
A.a
)根据我的测试,您的代码可能会失败,因为列表理解的范围不包含
a
。我不确定这是否是因为类A
仍在构造中,因此缺少要传递的适当范围。我这么说是因为用for
循环代替理解会产生预期的结果:相关问题 更多 >
编程相关推荐