我有一个任意对象,例如为一个类简化:
class Attribute:
def __init__(self, x, y):
self.x = x
self.y = y
def calc():
return self.x + self.y
我创建一个对象:
attr = Attribute(1, 1)
我想将此对象(attr)保存到一个字符串中,然后在必要时从那里加载它。我尝试使用该模块pickle,但没有掌握它。
import pickle
pickled = pickle.dumps(attr)
spickled = str(pickled)
unpickled = pickle.loads(spickled)
导致错误:
TypeError: a bytes-like object is required, not 'str'
str(pickled)因为实际上我必须将我的对象存储json为字符串,然后在另一次运行时从那里读取。
实际上问题是,如何将我的对象保存在 json 中然后读取它?不需要人类可读性。
如果编写编码器不是一种选择,那么可以使用一种不太优雅的方式:
这里要解决的主要任务是
bytes使用ast.literal_eval.在写作时,有一个来自Xander的答案,这个答案更可取。