Python的学习(二十一)----Python的静态变量
2013-11-09 12:25
267 查看
前段时间在论坛里面有人提问说,
class foo():
member1
member2
...
self.member1
foo.member2
其中的两个成员member1, member2有什么区别。。。这才知道python中也有自己的全局静态变量。
实例的属性是实例的,如上class中的member1,对它进行+/-操作时,只会对一个相应对象实例产生影响,(其类和该类的其它实例的不受影响)。
如果类的属性是 mutable 对象的话,对此对象*本身*的修改会反映到其他所有实例。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
相关文章推荐
- Python的学习(二十一)----Python的静态变量
- Python的学习(二十一)----Python的静态变量
- python OpenCV学习笔记(二十一):绘制直方图
- Python进阶(二十一)-Python学习进阶资料
- python学习(二十一)
- Python学习(二十一)——使用matplotlib交互绘图
- python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法
- 21. Python脚本学习笔记二十一图形化界面
- python 学习(二十一)之文件I/O
- 【Python学习系列二十一】pandas库基本操作
- Python学习笔记(二十一)单元测试_unittest
- python 学习笔记(二十一)
- Python学习札记(二十一) 函数式编程2 map/reduce
- [Python]学习资料整理
- python数据结构学习笔记-2016-10-05-04-抽象数据类型(四)
- Selenium2 Python 自动化测试实战学习笔记(九)
- python 系统学习笔记(一)
- Python学习笔记(八)异常
- python各种模块的学习地方
- Python学习笔记——语法基础