1. 程式人生 > >python類靜態變量

python類靜態變量

變更 產生 修改 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類靜態變量