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()

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐