###################################################### #add:http://www.jb51.net/article/54286.htm #可以发现:python的类变量和C++的静态变量不同,并不是由类的所有对象共享。 #类本身拥有自己的类变量(保存在内存),当一个TestClass类的对象被构造时,会将当前类变量拷贝一份给这个对象,当前类变量的值是多少,这个对象拷贝得到的类变量的值就是多少;而且,通过对象来修改类变量,并不会影响其他对象的类变量的值,因为大家都有各自的副本,更不会影响类本身所拥有的那个类变量的值;只有类自己才能改变类本身拥有的类变量的值。 # [popexizhi]应该是对象在使用类的变量时才产生的这个副本,也就是是说对象的这个副本内容决定于首次使用时的类变量值而不是对象构造时参见如下[add popexizhi] class TestClass(object): val1 = 100 def __init__(self): self.val2 = 200 def fcn(self,val = 400): val3 = 300 self.val4 = val self.val5 = 500 if __name__ == '__main__': inst = TestClass() inst1 = TestClass() inst2 = TestClass() #[add popexizhi] 此时100 print "TestClass.val1 # 100:%s" % TestClass.val1 # 100 print "inst1.val1 # 100:%s" % inst1.val1 # 100 inst1.val1 = 1000 print "inst1.val1 # 1000:%s" % inst1.val1 # 1000 print "TestClass.val1 # 100:%s" % TestClass.val1 # 100 TestClass.val1 =2000 print "inst1.val1 # 1000:%s" % inst1.val1 # 1000 print "TestClass.val1 # 2000:%s" % TestClass.val1 # 2000 #print "inst2.val1 # 2000 :%s" % inst2.val1 # 2000 inst3 = TestClass() print "inst3.val1 # 2000:%s" % inst3.val1 # 2000 TestClass.val1 =200 print "inst2.val1 # 2000 :%s" % inst2.val1 # [add popexizhi] 200 首次使用
html tool
2015年11月9日星期一
python类变量与c++区别
订阅:
博文评论 (Atom)
没有评论:
发表评论