Python全局变量,私有变量,类变量,实例变量的区别

 

全局变量(global variable)

在Python中,仅在函数内引用的变量是隐式全局变量。如果在函数体内的任何位置为变量赋值,除非明确声明为全局,否则将其视为局部变量

foo = 21           #全局变量
def A_Test():    
    global foo      
    print(foo)     #21
def B_Test():
    foo = 18       
    print(foo)     #打印局部变量18       
def C_Test():
    print(foo)     #21
            

Python官方文档建议global变量不用于形式参数,for循环控制目标,类定义,函数定义,import语句或者变量标注之中,因为在未来的实现中可能会需要修改程序的意义,global的使用可能会使得程序各个模块难以更改

私有变量(private variable)

双前导下划线 __var表示私有变量,具体情况可以查看下列文章的第3部分
作者:地球的外星人君
链接:https://zhuanlan.zhihu.com/p/36173202

类变量和实例变量(class variable, instance variable)

实例变量是每个实例各自唯一的变量,类变量是每个实例共同拥有的变量

class Clock(object):
    time_feature = 'limited'   #类变量
    def __init__(self, time):
	self.time = time       #实例变量
    def print_time(self):
        print(self.time)
        
>>> newYork = Clock('8:30')
>>> london = Clock('21:30')
>>> newYork.print_time()
'8:30'
>>> london.print_time()
'21:30'
>>> newYork.time_feature
'limited'
>>> london.time_feature
'limited'

如何修改实例中变量绑定的值?有两种方法

①访问实例中的变量进行修改

>>> newYork = Clock('8:30')
>>> newYork.time = '10:30'
>>> newYork.time
'10:30'
           

②通过参数的传递进行修改

class Clock(object):
    time_feature = 'limited'     #类变量
    def __init__(self, time):
        self.time = time         #实例变量
    def print_time(self, time):  #添加time
        print(self.time)
        
>>> newYork = Clock('8:30')
>>> clock.print_time('10:30')
'10:30'
posted @ 2019-10-03 21:26  wilburn  阅读(644)  评论(0)    收藏  举报