类变量
-
定义
在类里面定义,且不位于构造或者成员函数里面,同时没有" self. " 的前缀;或者在类外定义,用 类名.类变量名 来新增加类变量。
-
使用
两种使用方法: (1)类名.类变量名(如下的 Test.a) (2)类的实例对象.类变量名(如下的 T.a)
exp:
class Test:
a = 1 ### 类变量
def __init__(self):
self.member = 2
def indoor(self, people):
self.member = people
T = Test()
print(Test.a) ## 使用方法(1)
print(T.a) ## 使用方法(2)
>> 1
>> 1
作用范围
类变量可以通过 使用方法(1)进行全局的修改(如操作1所示)
类变量通过 使用方法(2)只能进行局部的修改(如操作2所示)
也就是说 刚开始Test.a 和T1.a 还有 T2.a 都是指向同一地址,Test.a的修改只是修改地址里的值,而没有修改地址,而直接修改实例化对象(如T1.a 或者 T2.a)的数值,会让其实例对象的值指向新的内存空间,并且不再受到类变量Test.a的影响
exp:
class Test:
a = 1
def __init__(self):
self.member = 2
def indoor(self, people):
self.member = people
T1 = Test()
T2 = Test()
print(T1.a)
print(T2.a)
print(Test.a)
print("############ 操作1 ###########")
Test.a = 1000
print(T1.a)
print(T2.a)
print(Test.a)
print("############ 操作2 ###########")
T1.a = 2000
print(T1.a)
print(T2.a)
print(Test.a)
输出:
1
1
1
############ 操作1 ###########
1000
1000
1000
############ 操作2 ###########
2000
1000
1000