python类静态变量

python的类静态变量直接定义在类中即可,不需要修饰符,如:

1 class Test:
2     stc_attr = 1
3     def __init__(self,attr1,attr2):
4      self.attr1 = attr1
5         self.attr2 = attr2

在类Test中,stc_attr是属于类Test的静态变量,attr1和attr2是属于对象的变量。并且通过类名和对象实例访问stc_attr都是合法的。

可以看到类Test,对象obj1和对象obj2中stc_attr变量的内存地址是相同的

我们变更stc_attr的值(必须从类名访问):

可以看到两个对象中stc_attr变量的内存地址一起改变了,所以只要通过类名修改静态变量的值就可以实现对象共享同一变量。

如果通过对象来修改静态变量的值:

这里通过obj1对象修改了stc_attr的值,可以看到obj1.stc_attr的内存地址和类以及obj2对象中的stc_attr变量内存地址不同了。这种情况下,通过类名修改stc_attr的值不会对obj1.stc_attr的值产生影响。

 

posted @ 2019-04-30 12:21  Alexzzzz  阅读(40160)  评论(0编辑  收藏  举报