先上代码,毕竟无代码言吊
>>> class k():
c = 6
def __init__(self):
self.c=1
>>> k.c
6
>>> mk = k()
>>> mk.c
1
差别就在这个地方,第一个C实例是无法调用的,是类中的局部变量,只有父类可以调用,而且,单独输入C也是无法调用的,说明不是全局变量。
再看代码
>>> c = 4
>>> class k():
def __init__(self):
self.c=1
c = 6
def p(self):
print(c)
>>> mk = k()
>>> mk.p()
4
>>> k.c
Traceback (most recent call last):
File "
k.c
AttributeError: type object 'k' has no attribute 'c'
此时,把常量定义放在初始化中,不能在外部调用,内部也无法使用,因为在__init__方法中定义便是__init__方法的局部变量。
所以,需要弄清楚常量定义的位置代表的管辖范围,方法中的局部变量无法在类中调用,内部优先调用全局变量,外部无法调用局部变量,除非变量前有申明,如最开头的代码。
在调用变量的时候一定要注意,如果目标是全局变量不需要注意,但是调用局部变量一定要添加申明,eg, k.c