Python变量访问范围

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语法基础——关于全局变量与局部变量




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值