看完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
的成员。