运行如下代码:
class A():
a=1
b=d
def __init__(self):
self.c=d
def info(self):
print(A.b)
if __name__ == '__main__':
d=2
A().info()
运行结果显示:NameError: name 'd' is not defined
但是info方法中输出self.c就可以正常运行
运行如下代码:
class A():
a=1
b=d
def __init__(self):
self.c=d
def info(self):
print(A.b)
if __name__ == '__main__':
d=2
A().info()
运行结果显示:NameError: name 'd' is not defined
但是info方法中输出self.c就可以正常运行
因为一个是类变量啊,你的c是在执行A()时才赋值的,这个时候你main里定义了b,这就类似于闭包啊。类变量在你定义类的时候就赋值了,如果这个时候你没定义这个变量就肯定会报错啊