Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 酸洗字符串引用_Python 2.7_Pickle - Fatal编程技术网

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'

我需要pickle
myStruct
对象,以便
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处理……或者我需要任何其他方法在我的大结构中立即更新这些字符串