python類靜態變量
阿新 • • 發佈:2019-04-30
變更 產生 修改 init info 兩個 tr1 改變 實例
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的值產生影響。
python類靜態變量