Python语言并不支持静态变量。因为Python是动态语言,不存在完全静态的变量。
Python中,静态成员变量称为类变量,非静态成员变量称为实例变量
class A:
## 静态变量
a = 12
def __init__(self, a):
##成员变量
self.a = a
print(A.a) # 12
print(A(0).a) # 0
静态变量是通过类名.变量名 来访问的,成员变量是通过对象.变量名访问的。
class B:
## 静态变量
b = 12
b1 = B()
b2 = B()
b1.b = 1
print(b1.b) ## 1
print(b2.b) ## 12
之所以结果不相同,原因在于给b1对象的b赋值并没有把类变量b变为1,而是b1对象自己生成了一个变量b,并初始化为1。而此时b2.b指向的仍然是类A的变量b,其值仍为12
模仿静态变量的用法
def varfunc():
var = 0
print ('var = %d' % var)
var += 1
if __name__ == '__main__':
for i in range(3):
varfunc()
# 类的属性
# 作为类的一个属性吧
class Static:
StaticVar = 5
def varfunc(self):
self.StaticVar += 1
print (self.StaticVar)
print (Static.StaticVar)
a = Static()
for i in range(3):
a.varfunc()
结果
演示一个python作用域使用方法
class Num:
nNum = 1
def inc(self):
self.nNum += 1
print ('nNum = %d' % self.nNum)
if __name__ == '__main__':
nNum = 2
inst = Num()
for i in range(3):
nNum += 1
print ('The num = %d' % nNum)
inst.inc()