类相当于函数,所以类中的静态变量,在实例化时会被执行 | |
class A(): a=42 b=[a+i for i in range(10)] print(b) A() | class A(): a = 42 # b = [a + i for i in range(10)] def fun(self): res = [] for i in range(10): res.append(self.a + i) print(res) def __init__(self): self.fun() A() |
运行报错:NameError: name 'a' is not defined |
python中的列表生成式相当于一个函数,变量的作用域等价于该生成式内部,由于变量a没有在内部中,类中不能直接访问变量a,而是需要通过self.a进行访问,所以访问会报错