case1:
# -*- coding: utf-8 -*-
'''
Created on 2016年1月29日
@author: zhouzhou
'''
class MemberCounter(object):
members=-1
def count(self):
self.members+=1
if __name__ == "__main__":
m1=MemberCounter()
m1.count()
print "m1.members is %d" %(m1.members)
m2=MemberCounter()
print "m2.members is %d" %(m2.members)
m2.count()
m2.count()
print "m1.members is %d" %(m1.members)
print "m2.members is %d" %(m2.members)
运行结果如下:
# -*- coding: utf-8 -*-
'''
Created on 2016年1月29日
@author: zhouzhou
'''
class MemberCounter(object):
members=-1
def count(self):
MemberCounter.members+=1
if __name__ == "__main__":
m1=MemberCounter()
m1.count()
print "m1.members is %d" %(m1.members)
m2=MemberCounter()
print "m2.members is %d" %(m2.members)
m2.count()
m2.count()
print "m1.members is %d" %(m1.members)
print "m2.members is %d" %(m2.members)
运行结果如下:
# -*- coding: utf-8 -*-
'''
Created on 2016年1月29日
@author: zhouzhou
'''
class MemberCounter(object):
members=-1
def count(self):
MemberCounter.members+=1
if __name__ == "__main__":
m1=MemberCounter()
m1.count()
print "m1.members is %d" %(m1.members)
m2=MemberCounter()
print "m2.members is %d" %(m2.members)
m1.members=8
m2.count()
m2.count()
print "m1.members is %d" %(m1.members)
print "m2.members is %d" %(m2.members)
运行结果如下:
# -*- coding: utf-8 -*-
'''
Created on 2016年1月29日
@author: zhouzhou
'''
class MemberCounter(object):
members=-1
def count(self):
self.members+=1
if __name__ == "__main__":
m1=MemberCounter()
m1.count()
print "m1.members is %d" %(m1.members)
print MemberCounter.members
运行结果如下:
case2:
# -*- coding: utf-8 -*-
'''
Created on 2016年1月29日
@author: zhouzhou
'''
num=100
class Test(object):
def printNum(self):
num=20
print num
if __name__ == "__main__":
test=Test()
print num
test.printNum()
print num
运行结果如下:
# -*- coding: utf-8 -*-
'''
Created on 2016年1月29日
@author: zhouzhou
'''
num=100
class Test(object):
def printNum(self):
global num
num=20
print num
if __name__ == "__main__":
test=Test()
print num
test.printNum()
print num
运行结果如下:
# -*- coding: utf-8 -*-
'''
Created on 2016年1月29日
@author: zhouzhou
'''
num=100
class Test(object):
def printNum(self):
print num
if __name__ == "__main__":
test=Test()
print num
test.printNum()
运行结果如下:
# -*- coding: utf-8 -*-
'''
Created on 2016年1月29日
@author: zhouzhou
'''
num=100
class Test(object):
def printNum(self):
print num
num=200
if __name__ == "__main__":
test=Test()
print num
test.printNum()
结论:
1、在一个类中定义变量,如果该变量定义为:类名.变量名 ——则此变量被所有实例共享。一旦实例重绑定变量后,则此变量为该实例所私有。此处定义的静态变量。若定义为:self.变量名——则此变量为各实例所私有。参考文章:python中的实例方法、静态方法、类方法、类变量和实例变量浅析
2、关于全局变量与局部变量,强烈建议不要出现同名的情况,局部变量在使用前需先定义,如要使用全局变量,可用global关键字声明。关于全局变量与局部变量的区别,可参考:Python语法基础——关于全局变量与局部变量