我的项目的一个重要部分是能够将类实例保存和加载到文件中。对于进一步的上下文,我的类既有一组属性又有一些方法。
到目前为止,我已经尝试使用pickle,但它并没有像预期的那样工作。首先,它不加载方法,也不让我添加我最初定义的属性;换句话说,它并不是真正制作我可以使用的类的副本。
相关代码:
class Brick(object):
def __init__(self, name, filename=None, areaMin=None, areaMax=None, kp=None):
self.name = name
self.filename = filename
self.areaMin = areaMin
self.areaMax = areaMax
self.kp = kp
self.__kpsave = None
if filename != None:
self.__logfile = file(filename, 'w')
def __getstate__(self):
f = self.__logfile
self.__kpsave = []
for point in self.kp:
temp = (point.pt, point.size, point.angle, point.response, point.octave, point.class_id)
self.__kpsave.append(temp)
return (self.name, self.areaMin, self.areaMax, self.__kpsave,
f.name, f.tell())
def __setstate__(self, state):
self.value, self.areaMin, self.areaMax, self.__kpsave, name, position = state
f …Run Code Online (Sandbox Code Playgroud)