【发布时间】:2016-03-24 22:18:40
【问题描述】:
是否可以在 python 中具有可序列化的静态类变量或方法? 例如假设,我有以下代码 sn-p:
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
我的问题是: 如何从我的文件中加载类变量?换句话说,我如何序列化一个类变量?如果直接不可能,还有其他选择吗?请建议。 由于无法选择类变量,因此我在读取文件时在主要部分使用了代码 sn-p,如下所示:
#MAIN
f = open("t1.dat", "rb")
d = pickle.load(f)
Sample.count = len(d.values())
print "Sample.count = " + str(Sample.count)
现在的输出是:
Sample.count = 10
这是可接受的解决方案吗?还有其他选择吗?
【问题讨论】:
标签: python class serialization static class-variables