在看完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
发布于 2015-10-04 20:33:55
只有新创建的实例才具有静态变量的最新值同步值。
不是这样的。也许您混淆了以下行为:
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
的成员。
https://stackoverflow.com/questions/32941160
复制