0
点赞
收藏
分享

微信扫一扫

python ——静态变量

罗子僧 2022-01-27 阅读 72
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()

结果
在这里插入图片描述

举报

相关推荐

0 条评论