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'

浙公网安备 33010602011771号