触及SO Python - why use "self" in a class?上发布的以下问题,我想知道:
如果我在一个给定类的方法中创建一个变量而不使用“self。”,它会是一个类变量吗?如果不是这样,为什么不呢?
例如,如果我有一个这样的类:
class A:
def somefunction(self):
x=1
x 是一个类变量吗?
答案 0 :(得分:3)
其实没有。因为x不是类变量 - 它是方法somefunction
的局部变量。
Class variable应该在类体中完全定义:
class A:
x = 1
def somefunction(self):
A.x += 1
print A.x
BTW:即使你已经定义了classvariable,你仍然可以获得输出:
2
2
因为somefunction
您正在分配x=1
,所以每次运行此功能时,x
的值都会重置为1
:)
答案 1 :(得分:1)
无论何时在Python函数中分配变量,默认情况下都会在最里面的本地命名空间中创建它。除非您明确声明,否则您不会引用不同命名空间中的变量(如A
类)。因此,在您的代码中,您在本地命名空间中创建x
,该命名空间特定于该函数 - 甚至不是特定于A
的实例,因为您没有声明它为self.x
。我相信这就是为什么你得2,2
而不是2,3
。
答案 2 :(得分:1)
不,你的假设是错误的。这是一个局部变量。