前段时间在论坛里面有人提问说,
class foo():
member1 member2 ... self.member1 foo.member2其中的两个成员member1, member2有什么区别。。。这才知道python中也有自己的全局静态变量。
实例的属性是实例的,如上class中的member1,对它进行+/-操作时,只会对一个相应对象实例产生影响,(其类和该类的其它实例的不受影响)。
如果类的属性是 mutable 对象的话,对此对象*本身*的修改会反映到其他所有实例。python 中定义的静态成员变量,就是类的变量, 只能通过 类.变量名的形式获取
类变量是该类的所有对象共享的变量成员,
class A: a1 = 0 def __init__(self, a2): self.a2 = a2 def setData(self, a3): self.a3 = a3 def show(self): print 'A1:%s,a1:%s,a2:%s,a3:%s' %(A.a1, self.a1, self.a2, self.a3) if __name__ == '__main__': obj1 = A(1) obj2 = A(2) obj3 = A(3) obj1.setData(1) obj2.setData(2) obj3.setData(3) obj1.a1 = 1 obj2.a1 = 2 obj3.a1 = 3 A.a1 = 1 A.a2 = 2 A.a3 = 3 obj1.show() obj2.show() obj3.show() print 'A1:%s,A2:%s,A3:%s' %(A.a1, A.a2, A.a3)
输出结果: A1:1,a1:1,a2:1,a3:1A1:1,a1:2,a2:2,a3:2A1:1,a1:3,a2:3,a3:3A1:1,A2:2,A3:3