Python 2.7 酸洗字符串引用
我得把一个很大的结构酸洗一下。在这个结构中,我必须更新结构中多次引用的字符串 让我们让它变得更简单:Python 2.7 酸洗字符串引用,python-2.7,pickle,Python 2.7,Pickle,我得把一个很大的结构酸洗一下。在这个结构中,我必须更新结构中多次引用的字符串 让我们让它变得更简单: myStruct = [1, 'myStr', 2, 'myStr'] 程序应同时用新值更新“myStr”。 为了实现这一点,我创建了如下字符串引用类: class StrReference(object): def __init__(self): self.value = 'myStr' myRefStr = StrReference() myStruct =
myStruct = [1, 'myStr', 2, 'myStr']
程序应同时用新值更新“myStr”。
为了实现这一点,我创建了如下字符串引用类:
class StrReference(object):
def __init__(self):
self.value = 'myStr'
myRefStr = StrReference()
myStruct = [1, myRefStr, 2, myRefStr]
现在我可以更新myRefStr.value='newStr'
我需要picklemyStruct
对象,以便StrReference
类被pickle为字符串
[1, 'myStr', 2, 'myStr']
[1, 'newStr', 2, 'newStr']
我确实试过\uuuu getstate\uuuu
和\uuu reduce\uuuuuu
但是运气不好。
pickle结果将始终引用StrReference
类
有什么建议吗?使用
\uuu getstate\uuuu
和\uu setstate\uuuu
getstate(自)
不存储对象的dict属性,您可以返回一个自定义状态,以便在对象创建时存储
腌制。当对象被激活时,setstate将使用该状态
不挑剔的
设置状态(自身、状态)
当对象取消勾选时,如果定义了setstate,则对象的状态将传递给它,而不是直接应用于对象的dict。这是手牵手的
与getstate一起使用:当两者都被定义时,您可以表示
对象的pickle状态随您的需要而变化
请参见和我已经这样做了,但是pickle对象将保持StrReference而不是字符串。我需要的是,一旦取消勾选,结构就包含strings.def_uugetstate_uuu(self):return self.valuedef_uureduce_uuu(self):retrun(string.u class,(self.value,))我没有实现setstate,因为将取消勾选的进程不知道StrReference。它需要取消勾选一个简单的字符串对象。这就是重点-/实际上,重点是:我需要将StrReference类作为一个简单字符串进行pickle处理……或者我需要任何其他方法在我的大结构中立即更新这些字符串