Chinaunix首页 | 论坛 | 博客
  • 博客访问: 46982
  • 博文数量: 23
  • 博客积分: 425
  • 博客等级: 下士
  • 技术积分: 237
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-10 09:57
文章分类

全部博文(23)

文章存档

2013年(23)

我的朋友

分类: Python/Ruby

2013-03-31 11:05:47

一直以来用python做测试,可能没有很深入的了解,前段时间在论坛里面有人提问说,

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:1
A1:1,a1:2,a2:2,a3:2
A1:1,a1:3,a2:3,a3:3
A1:1,A2:2,A3:3

阅读(308) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~