zoukankan      html  css  js  c++  java
  • Python的学习(二十一)----Python的静态变量

    前段时间在论坛里面有人提问说,

    class foo():
    member1
    member2
    ...
    self.member1
    foo.member2

    其中的两个成员member1, member2有什么区别。。。这才知道python中也有自己的全局静态变量。

    实例的属性是实例的,如上class中的member1,对它进行+/-操作时,只会对一个相应对象实例产生影响,(其类和该类的其它实例的不受影响)。

    如果类的属性是 mutable 对象的话,对此对象*本身*的修改会反映到其他所有实例。python 中定义的静态成员变量,就是类的变量, 只能通过 类.变量名的形式获取

    类变量是该类的所有对象共享的变量成员,

    class A:
         a1 = 0
         def __init__(self, a2):
             self.a2 = a2
     
         def setData(self, a3):
             self.a3 = a3
     
         def show(self):
             print 'A1:%s,a1:%s,a2:%s,a3:%s' %(A.a1, self.a1, self.a2, self.a3)
     
     if __name__ == '__main__':
         obj1 = A(1)
         obj2 = A(2)
         obj3 = A(3)
     
         obj1.setData(1)
         obj2.setData(2)
         obj3.setData(3)
     
         obj1.a1 = 1
         obj2.a1 = 2
         obj3.a1 = 3
         
         A.a1 = 1
         A.a2 = 2
         A.a3 = 3
         obj1.show()
         obj2.show()
         obj3.show()
         print 'A1:%s,A2:%s,A3:%s' %(A.a1, A.a2, A.a3)
    
    

    输出结果:
    A1:1,a1:1,a2:1,a3:1
    A1:1,a1:2,a2:2,a3:2
    A1:1,a1:3,a2:3,a3:3
    A1:1,A2:2,A3:3
    

  • 相关阅读:
    Docker的历史
    IP路由基础
    Docker的基础知识(二)
    Docker的基础知识(一)
    CentOS7下安装部署“zabbix”
    使用amoeba实现mysql读写分离
    ?? 运算符(C# 参考)
    ?? 运算符(C# 参考)
    knockout,change事件
    knockout,change事件
  • 原文地址:https://www.cnblogs.com/chenjianhong/p/4144703.html
Copyright © 2011-2022 走看看