在实例之间创建共享成员变量(静态)



看完https://stackoverflow.com/a/69067/1767754我知道了

1) Python中的静态成员与c++中的静态成员不同

2)只有新创建的实例才具有静态变量的最新同步值

class Test:
    var = 3
    def __init__(self):
        pass
a = Test()
print "a " +  str(a.var) #output: 3
Test.var = 5
b = Test()
print "b " + str(b.var) #output: 5
print "a " + str(a.var) #output: 3 not synced with static member
那么,在类实例之间共享成员变量的通常方式是什么?创建一个保存共享数据的全局类怎么样?像这样:
class Globals:
    var = 3
class Test:
    def setVar(self, var):
        Globals.var = var
test = Test()
test.setVar(3)
print Globals.var

只有新创建的实例才具有静态变量的最新同步值

不是真的。也许你混淆了:

的行为
class Test:
    var = 3
    def __init__(self):
        pass
a = Test()
print "a " +  str(a.var)
Test.var = 5
b = Test()
print "b " + str(b.var)
print "a " + str(a.var)
输出:

a 3
b 5
a 5
具有 行为的

class Test:
    var = 3
    def __init__(self):
        pass
a = Test()
print "a " +  str(a.var)
a.var = 2   # Making var a member of the instance a
Test.var = 5
b = Test()
print "b " + str(b.var)
print "a " + str(a.var)
a 3
b 5
a 2

在第二种情况下,var不仅是T的静态成员,而且还是实例a的成员。

最新更新