python类静态变量

class Test:
    stc_attr = 1
    def __init__(self,attr1,attr2):
     self.attr1 = attr1
        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的值产生影响。

 

ref :https://www.cnblogs.com/Alexzzzz/p/10795227.html

posted @ 2020-08-14 14:52  cknds  阅读(13)  评论(0编辑  收藏  举报