在Python中是否可以拥有可序列化的静态类变量或方法?举个例子,假设我有以下代码片段:
输出结果为:
现在,我有另一个类似于上述的阅读器程序:
输出结果为:
现在的输出是:
这个方案可行吗?还有其他选择吗?
import pickle
class Sample:
count = 0 # class variable
def __init__(self, a1=0, a2=0):
self.a = a1
self.b = a2
Sample.count += 1
#MAIN
f = open("t1.dat", "wb")
d = dict()
for i in range(10):
s = Sample(i, i*i)
d[i] = s
pickle.dump(d,f)
print "Sample.count = " + str(Sample.count)
f.close()
输出结果为:
Sample.count = 10
现在,我有另一个类似于上述的阅读器程序:
import pickle
class Sample:
count = 0 # class variable
def __init__(self, a1=0, a2=0):
self.a = a1
self.b = a2
Sample.count += 1
#MAIN
f = open("t1.dat", "rb")
d = pickle.load(f)
print "Sample.count = " + str(Sample.count)
输出结果为:
Sample.count = 0
我的问题是: 如何从文件中加载类变量?换句话说,如何序列化一个类变量?如果直接不可能,是否有任何替代方法?请建议。 由于无法选择类变量,作为替代方案,在读取文件时,我已经在主要部分使用了以下代码片段:
#MAIN
f = open("t1.dat", "rb")
d = pickle.load(f)
Sample.count = len(d.values())
print "Sample.count = " + str(Sample.count)
现在的输出是:
Sample.count = 10
这个方案可行吗?还有其他选择吗?