可以在其中一个类中创建一个类变量吗? Python中的方法?

时间:2014-07-18 14:57:22

标签: python

触及SO Python - why use "self" in a class?上发布的以下问题,我想知道:

如果我在一个给定类的方法中创建一个变量而不使用“self。”,它会是一个类变量吗?如果不是这样,为什么不呢?

例如,如果我有一个这样的类:

class A:
    def somefunction(self):
        x=1

x 是一个类变量吗?

3 个答案:

答案 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)

不,你的假设是错误的。这是一个局部变量。